Lo revisado en la sección anterior
En la sección anterior convertimos elementos de arreglo en variables (y viceversa), y recorrimos elementos e índices según ubicación de índices de elementos en arreglos de PHP. Ahora veremos cómo ejecutar funciones desde el contenido de un arreglo; es decir, desde sus elementos.
Combinando un arreglo y una función y ejecutándola con array_walk();
Si definimos un arreglo con elementos clave=>valor, luego una función con parámetros en forma de variable (que representarán a futuro el papel de una clave y de un valor de cada elemento del arreglo); y finalmente aplicamos la función array_walk(nombreArreglo, nombreFuncion); el resultado será la activación del contenido de la función para cada elemento del arreglo.
En .PHP
<?php
// El arreglo con elementos clave/valor
$frutas = [
"Guayacanes" => "Al norte",
"Valdivia" => "Al sur",
"La Chala" => "Suroeste"
];
// Función global
// Parámetros son variables
function mostrarElemento($valor, $clave) {
// Mostrando los argumentos
echo "Clave: $clave | Valor: $valor\n";
}
// Aquí indicamos que mediante array_walk()...
// 1er argumento: $frutas es un arrego con elementos clave/valor
// 2do argumento: 'mostrarElemento' es la función que recorre
array_walk($frutas, 'mostrarElemento');
/* RESULTADO:
Clave: Guayacanes | Valor: Al norte
Clave: Valdivia | Valor: Al sur
Clave: La Chala | Valor: Suroeste
*/
?>
Así mismo, para elementos únicos de arreglo, sin la dupla clave/valor, el recurso array_walk() ejecutará el contenido de la función para cada elemento del arreglo. Recordar: aunque los elementos de un arreglo no contengan la dualidad clave/valor, un elemento por sí mismo ya tiene su clave. Esa es su índice natural, desde el cero en adelante para cada elemento "solitario" de un arreglo.
Es por esa razón que, aunque abajo usemos un arreglo con elementos "solitarios" (sin clave explícita) igualmente se necesitará alojar cada índice de elemento en el parámetro $clave de la función alCuadrado().
En .PHP
<?php
// Arreglo
// Indice---0---1
$numeros = [2, 4];
// El signo '&' altera directamente los elementos del arreglo
// Sin ese signo, los valores no mostrarán alteración
function alCuadrado(&$valor, $clave) {
$valor = $valor * $valor;
}
// Junta elementos del arreglo con la función
array_walk($numeros, 'alCuadrado');
print_r($numeros);
/*
Array
(
[0] => 4
[1] => 16
)
*/
?>
Usando tercer argumento complementario en array_walk();
Recreamos un listado de datos que requieren una clave y un valor que sea un arreglo (con dos claves y dos valores) cada uno:
En concepto
CLAVE----------[CLAVE--VALOR]----[CLAVE--VALOR]----
Tienda sur: 30 naranjas 10 limones
Tienda norte: 10 naranjas 5 limones
Tienda este: 5 naranjas 0 limones
En .PHP
<?php
// Array base: tiendas y su inventario
// Cada elemento tiene un 2do arreglo como valor
$arreglo_Inventario = [
"Tienda Sur" => ["naranjas" => 30, "limones" => 10],
"Tienda Norte" => ["naranjas" => 10, "limones" => 5],
"Tienda Este" => ["naranjas" => 5, "limones" => 0],
];
// Dato adicional: supervisor general
// Lo acoge el tercer parámetro de funcionMostrarInventario()
$supervisor = "Viejo Napo";
// Aplicamos array_walk con el tercer parámetro
// --------Arreglo----------------función creada-------------dato extra
array_walk($arreglo_Inventario, 'funcionMostrarInventario', $supervisor);
// Función
// Cada parámetro es una variable para cada dato
function funcionMostrarInventario($frutas, $nombreTienda, $encargado) {
// Usamos los argumentos que apuntan datos del arreglo
echo "<strong>$nombreTienda</strong><br/>";
echo "Naranjas: {$frutas['naranjas']}<br/>";
echo "Limones: {$frutas['limones']}<br/>";
echo "Supervisor: $encargado<br /><br/>";
}
/* --- RESULTADO
Tienda Sur
Naranjas: 30
Limones: 10
Supervisor: Viejo Napo
Tienda Norte
Naranjas: 10
Limones: 5
Supervisor: Viejo Napo
Tienda Este
Naranjas: 5
Limones: 0
Supervisor: Viejo Napo
*/
?>
Aclaremos algo del ejemplo de arriba: la función funcionMostrarInventario() contiene 3 argumentos:
function funcionMostrarInventario($frutas: Es el valor de cada elemento del array $arreglo_Inventario.$nombreTienda: cada clave de cada elemento$encargado: el dato del nombre)
Sin embargo, la variable $frutas se comporta tal cual apuntáramos al valor de uno de los elementos del arreglo:
En .PHP
<?php
$arr = [
"Tienda" => ["naranjas" => 30, "limones" => 10]
];
// -------CLAVE----IDENTIFICADOR DE VALOR
echo $arr['Tienda']['naranjas'] . "\n";
// 30
echo $arr['Tienda']['limones'] . "\n";
// 10
?>
Y esto es importante por que debemos recordar siempre lo siguiente: cuando debemos apuntar a un valor de elemento en arreglo asociativo en PHP, SIEMPRE DEBEMOS LLAMAR A LA CLAVE (al nombre único de cada fila); y luego AL NOMBRE IDENTIFICADOR DE CADA VALOR.
BIBLIOGRAFÍA
www.php.net (2025). ¿Qué es PHP?Kevin Tatroe and Peter MacIntyre (2020). Programming PHP