Récursive array_search
J'ai un tableau multidimensionnel:
$categories = array(
array(
'CategoryID' => 14308,
'CategoryLevel' => 1,
'CategoryName' => 'Alcohol & Food',
'CategoryParentID' => 14308
),
//CHILD CATEGORIES
array(
array(
'CategoryID' => 179836,
'CategoryLevel' => 2,
'CategoryName' => 'Alcohol & Alcohol Mixes',
'CategoryParentID' => 14308
),
array(
array(
'CategoryID' => 172528,
'CategoryLevel' => 2,
'CategoryName' => 'Antipasto, Savoury',
'CategoryParentID' => 14308
)
)
)
);
J'ai besoin d'obtenir la localisation exacte de l'indice, et depuis array_search
ne fonctionne pas sur les multiples dimensions des tableaux, je suis en utilisant l'une des fonctions fournies par le manuel PHP de la page.
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
.. mais il renvoie également la clé de la première pile uniquement:
echo recursive_array_search(172528, $categories); //outputs 1
J'en attends:
[1][1][0]
OriginalL'auteur 3zzy | 2015-02-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier votre fonction récursive de ce genre, qui devrait vous donner la solution:
Ce résultat
Depuis CategoryID est également un élément clé dans votre tableau multidimensionnel.
Si vous ne voulez pas cela, vous pouvez adapter la fonction à
$categories.$key
, il imprime juste les catégories et que la chaîne littéralement.Je ne peux pas comprendre cela soit, qui que ce soit?
OriginalL'auteur Pieter De Schepper
Vous êtes ignorant la valeur de votre appel intérieur à
recursive_array_search
. Ne pas le faire.syntax error, unexpected 'return' (T_RETURN) in
Correction de l'erreur de syntaxe.
Bonjour. Dans la gamme
["name" => "class_test", "static" => true, "public" => true, "interface" => false]
le retour est[0 => "static"]
, à savoir qu'retourne le premier élément trouvé. Tous reviennent avec cette solution?[0 => "static", 1 => "public"]
OriginalL'auteur Oswald
OriginalL'auteur Oleksandr P.