Tengo una matriz asociativa en PHP y quiero seleccionar una combinación de clave/valor aleatoria. Esto es lo que tengo hasta ahora:Selección de un elemento aleatorio de una matriz asociativa de PHP
Initialize.
$locations = array();
bucle a través de una consulta SQL y añade pares clave/Val:
array_push($locations, "'$location_id' => '$location_name'");
Más tarde, seleccionar un índice aleatorio de la matriz:
$rand = array_rand($locations);
Rand es sólo un número . Así ubicaciones [$ rand] me da algo así como:
'1' => 'Location 1'
bien grande, un elemento de matriz Assoc. En este punto, no sé la clave de esta matriz asociativa, así que he intentado lo siguiente:
foreach($locations[$rand] as $loc_id => $location_name) {
echo "$key : $value<br/>\n";
}
$loc_id, $location_name = each($locations[$rand]);
$location_name = $locations[key($rand)];
Ninguno de estos 3 intentos trabajo. Todos arrojan errores como "La variable pasada no es una matriz".
Estoy seguro de que hay un simple liner 1 que puede arrancar un par aleatorio de clave/valor de la matriz. O mi sintaxis está desactivada. Realmente apreciaría la ayuda.
Su problema está en 'array_push ($ locations," '$ location_id' => '$ location_name' ") ; '. Haga esto en su lugar: '$ locations [$ location_id] = $ location_name;'. Entonces 'array_rand ($ location)' devolverá un '' location_id' al azar; y puede obtener el nombre con '$ name = $ locations [$ location_id]'. – arnaud576875
está todo correcto, por supuesto, acabo de elegir este aC. Trabajo mejor con código de ejemplo. y sí, estoy bastante avergonzado de que el impulso no sea correcto. codifico una tonelada en perl (w hashes) ¡así que debería haberlo sabido mejor! ¡GRACIAS! – Jeff
bueno, me salvaste el día – RezaSh