1
<!DOCTYPE html>
<html>
<body>
<h2>Manejo Profesional de Arrays en PHP 8.3</h2>
<?php
// 1. Array asociativo multidimensional (catálogo de productos)
$inventario = [
["id" => 1, "nombre" => "Teclado Mecánico", "precio" => 85.00, "categoria" => "Hardware", "stock" => 12],
["id" => 2, "nombre" => "Monitor 4K 27\"", "precio" => 320.00, "categoria" => "Hardware", "stock" => 4],
["id" => 3, "nombre" => "Curso PHP Fullstack", "precio" => 49.00, "categoria" => "Educación", "stock" => 999],
["id" => 4, "nombre" => "Mouse Ergonómico", "precio" => 45.00, "categoria" => "Hardware", "stock" => 0],
["id" => 5, "nombre" => "Suscripción Kilopolis PRO", "precio" => 19.00, "categoria" => "Educación", "stock" => 999],
];
echo "<p>Total de productos registrados: <strong>" . count($inventario) . "</strong></p>";
// 2. Filtrar productos con stock disponible usando array_filter
$disponibles = array_filter($inventario, fn(array $item): bool => $item['stock'] > 0);
echo "<h4>Productos Disponibles en Stock (" . count($disponibles) . "):</h4>";
echo "<ul>";
foreach ($disponibles as $prod) {
echo "<li><strong>{$prod['nombre']}</strong> — \${$prod['precio']} USD (Stock: {$prod['stock']})</li>";
}
echo "</ul>";
// 3. Extraer solo los nombres con array_column
$nombres = array_column($inventario, 'nombre');
echo "<p>Lista plana de nombres: <em>" . implode(" | ", $nombres) . "</em></p>";
// 4. Calcular el valor total del inventario con array_reduce
$valorTotal = array_reduce(
$disponibles,
fn(float $acumulado, array $item): float => $acumulado + ($item['precio'] * min($item['stock'], 20)),
0.0
);
echo "<p style='padding:10px; background:#f0fdf4; border-left:4px solid #16a34a;'>
Valorización estimada del stock disponible: <strong>$" . number_format($valorTotal, 2) . " USD</strong>
</p>";
// 5. Operador Spread (...) para combinar arrays (PHP 7.4+)
$hardwareBase = ["Mouse", "Teclado"];
$hardwarePro = ["Webcam 4K", "Micrófono USB"];
$kitCompleto = [...$hardwareBase, "Auriculares con cancelador", ...$hardwarePro];
echo "<h4>Kit Desarrollador combinado con spread operator (...):</h4>";
echo "<ol>";
foreach ($kitCompleto as $art) {
echo "<li>{$art}</li>";
}
echo "</ol>";
?>
</body>
</html>
Haz clic para editar este código