2010-06-28 4 views
0

Possible en double:
PHP: get keys of independent arraysPHP: trouver position clé dans le tableau multidimensionnel

Bonjour.

J'ai un tableau multidimensionnel. Je veux une fonction qui trouve la position de la clé de tableau donnée (toutes mes clés de tableau sont des chaînes) et retourne ensuite la position de la clé comme un tableau.

par exemple:

 
$arr = array 
(
    'fruit' => array(
     'apples' => array(), 
     'oranges' => array(), 
     'bananas' => array() 
    ), 
    'vegetables' => array(
     'tomatoes' => array(), 
     'carrots' => array(), 
     'celery' => array(), 
     'beets' => array 
     (
      'bears' => array(), 
      'battlestar-galactica' => array() 
     ), 
    ), 
    'meat' => array(), 
    'other' => array() 
); 

Maintenant, si j'appelle la fonction comme ceci:

theFunction('bears');

Il devrait retourner:

array(1, 3, 0);
+3

Sérieusement? Je vous ai répondu il y a deux jours exactement. Voir http://stackoverflow.com/questions/3116970/php-get-keys-of-independent-arrays/3117173#3117173 fonction 'getPosition'. – Artefacto

+0

Quelle est la fonctionnalité attendue dans cet exemple? $ arr = array ('bears' => array ('bears' => array ('bears' => 5))); ? – cypher

+0

En effet vous l'avez fait, mais votre fonction ne fonctionnait pas correctement pour les tableaux multidimensionnels plus profonds, pour une raison quelconque. La fonction ci-dessous fonctionne. – user367217

Répondre

2
function array_tree_search_key($a, $subkey) { 
    foreach (array_keys($a) as $i=>$k) { 
     if ($k == $subkey) { 
     return array($i); 
     } 
     elseif ($pos = array_tree_search_key($a[$k], $subkey)) { 
     return array_merge(array($i), $pos); 
     } 
    } 
} 
+0

Merci, ça marche! Mais est-il possible d'utiliser uniquement la chaîne $ subkey en tant que param, et toujours utiliser le même tableau? Je n'arrive pas à faire marcher ça ... – user367217