J'ai un tableau associatif en PHP et je veux en sélectionner une paire clé/valeur aléatoire. Voici ce que j'ai jusqu'à présent:Sélection d'un élément aléatoire dans un tableau associatif PHP
Initialiser.
$locations = array();
boucle dans une requête SQL et AJOUTE paires de clés/val:
array_push($locations, "'$location_id' => '$location_name'");
Plus tard, je sélectionner un index aléatoire du tableau:
$rand = array_rand($locations);
Rand est juste un nombre . Donc, les emplacements [$ rand] me donnent quelque chose comme:
'1' => 'Location 1'
OK, un élément assoc array. À ce stade, je ne sais pas la clé de ce tableau assoc, donc j'ai essayé les choses suivantes:
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)];
Aucune de ces travaux 3 tentatives. Ils lancent tous des erreurs comme "La variable passée n'est pas un tableau".
Je suis sûr qu'il y a un simple 1 revêtement qui peut extraire une paire clé/valeur aléatoire de la matrice. Ou ma syntaxe est désactivée. J'apprécierais vraiment l'aide.
Votre problème se trouve dans 'array_push ($ locations," '$ location_id' => '$ location_name' ") ". Faites ceci à la place: '$ locations [$ location_id] = $ location_name;'. Alors 'array_rand ($ location)' retournera un '$ location_id' aléatoire; et vous pouvez obtenir le nom avec '$ name = $ locations [$ location_id]'. – arnaud576875
vous avez tous raison, bien sûr - je viens de choisir celui-ci, je travaille mieux avec un exemple de code. et oui, je suis assez gêné par le fait que le push ne soit pas correct. Je code une tonne en perl (w hashes) donc j'aurais dû savoir mieux! JE VOUS REMERCIE! – Jeff
sympa, tu as sauvé ma journée – RezaSh