2011-07-06 6 views
2

J'ai été en train de creuser et d'apprendre autant que possible sur les tableaux PHP, mais j'ai rencontré une pierre d'achoppement que je n'arrive pas à comprendre.Recherche dans les tableaux imbriqués PHP

Dans mon exemple de code, j'ai un tableau qui ressemble à ceci:

$array = array("fruit" => array("apple", "orange", "pear"), "veg" => array("carrot","celery")); 

Maintenant, ailleurs dans le code, j'ai une variable appelée myfavouriteitem $

$myfavouriteitem = "apple"; 

Avec la valeur de la variable $myfavouriteitem, je voudrais retourner la valeur "fruit".

J'ai essayé d'utiliser la fonction array_search() en PHP, mais je n'ai pas de chance. J'ai été capable d'utiliser array_search() jusqu'au moment où j'ai introduit le tableau imbriqué.

Si j'aborde ce problème sous un mauvais angle, faites-le moi savoir. Ma première pensée à ce sujet était d'utiliser une base de données pour stocker cette information (surtout depuis que je suis nouveau dans les tableaux); Cependant, c'est hors de question pour ce projet particulier. Dans cet esprit, mes ensembles de données auront tous une relation un-à-plusieurs (une clé avec plusieurs valeurs).

Répondre

1
foreach ($array as $key => $val) { 
    if (in_array($myfavouriteitem, $val)) { 
     echo $key; 
     break; 
    } 
} 
+0

Merveilleux. Merci, Zerkms. J'ai réussi à faire fonctionner ça pour moi. Je vais passer plus de temps à revoir les tableaux PHP. – Andrew

1
echo key(array_filter($array, function ($values) use ($myfavouriteitem) { return in_array($myfavouriteitem, $values); })); 

besoins PHP 5.3 et bien peut-être plus lent que la solution de @zerkms. Mais bon, c'est un one-liner fonctionnel! ;)