J'ai un tableau multidimensionnel $games_array
qui ressemble à ceci:Rechercher un tableau multidimensionnel et retourner la clé parent
<?php
$games_array = array(
"game-one" => array(
"name" => "Game One",
"download_id" => "gameone",
"file" => "./games/files/Game One.zip"
),
"game-two" => array(
"name" => "Game Two",
"download_id" => "gametwo",
"file" => "./games/files/Game Two.zip"
)
);
?>
Par exemple, pour accéder au nom du premier jeu, j'utiliser $games_array["game-one"]["name"]
qui fonctionne bien. Bon, maintenant au problème: J'ai une valeur, par exemple gameone
, qui correspond à download_id
(qui est une clé que tous les jeux dans $games_array
a).
Maintenant, je veux trouver la clé, dans cet exemple game-one
ou game-two
, du tableau qui contient cette valeur pour la clé download_id
. Ça marche. Ce que je fais dans le code ci-dessous est de parcourir $games_array
et de rechercher chaque jeu pour la valeur (dans le code ci-dessous gameone
). S'il est trouvé, la clé de cette valeur est renvoyée.
La prochaine chose que je fais (if ($key_found) { ...
) est d'essayer de trouver la valeur de la file
clé en utilisant le tableau dans lequel la valeur pour laquelle je cherchais à l'origine a été trouvé, et l'enregistrer dans $file
.
Malheureusement $file
est toujours vide et je ne sais pas pourquoi.
<?php
$key = "";
$key_found = false;
$search_for_value = "gameone"; // search for game's download id in array
$file = "";
foreach($games_array as $game_id => $game_data) {
$key = array_search($search_for_value, $game_data);
echo "Searching for value <b>" . $search_for_value . "</b> in sub-array <b>" . $game_id . "</b>...<br />";
if ($key === FALSE) {
echo "Search returned FALSE<br /><br />";
} else if ($key === NULL) {
echo "Search returned NULL<br /><br />";
} else {
echo "\$key <b>" . $key . "</b> found! <br /><br />";
$key_found = true;
}
if ($key_found) {
// Key "download_id" found. Now search the parent array for the found key and use the
// returned result as the new key to access the "file" value in the found game's id in $games_array
$file = $games_array[array_search($key, $game_id)]["file"];
echo "The key <b>" . $key . "</b> was found.<br/>";
echo "\$file = " . $file . "<br />";
echo "Exiting loop.<br /><br />";
break;
}
}
$file = $games_array[$games_data]["file"];
echo "Checking if the file \"" . $file . "\" exists...<br />";
echo (file_exists($file) ? "File \"" . $file . "\" exists." : "File \"" . $file . "\" does not exist.");
?>
J'espère que vous comprenez mon problème et que vous pouvez m'aider. J'apprécierais beaucoup ... Je suis vraiment coincé ici.
Merci! Une approche bien meilleure qui fonctionne aussi parfaitement. –