2010-08-11 10 views
1

$total est un tableau de dimensions multiples:Rechercher dans le tableau

Array (
    [1] => Array ([title] => Jake [date] => date) 
    [2] => Array ([title] => John [date] => date) 
    [3] => Array ([title] => Julia [date] => date) 
) 

Comment rechercher [title] valeur et donner comme résultat ID d'un tableau?

Si nous cherchons Julia il devrait donner 3 (ID est [3]).

Merci.

+0

Recherche à l'aide d'une boucle pour '$ tableau total'. –

+0

@Bang Dao: pour chaque rangée? Il semble que ce sera trop lent. – James

+0

Il n'y a pas d'autres moyens. Aucune fonction intégrée ne fonctionne sur un tableau multidimensionnel, vous devez donc définir une nouvelle fonction pour ce type de travail –

Répondre

1

Ok désolé pour ma réponse précédente, n'a pas remarqué qu'il était tableau imbriqué. Vous pouvez essayer ceci:

function recursiveArraySearch($haystack, $needle, $index = null) 
{ 
    $aIt = new RecursiveArrayIterator($haystack); 
    $it = new RecursiveIteratorIterator($aIt); 

    while($it->valid()) 
    { 
     if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) { 
      return $aIt->key(); 
     } 

     $it->next(); 
    } 

    return false; 
} 

$array = array(3 => array('title' => 'Julia')); 

$key = recursiveArraySearch($array, 'Julia'); 
echo $key; 

Résultat:

3 
2
function get_matching_key($needle, $innerkey, $haystack) { 
    foreach ($haystack as $key => $value) { 
    if ($value[$innerkey] == $needle) { 
     return $key; 
    } 
    } 

    return NULL; 
} 

$key_you_want = get_matching_key("Julia", "title", $total); 
+0

array_keys ($ total) ?? Voulez-vous dire array_keys ($ haystack)? Et pourquoi pas simplement: foreach ($ haystack comme $ key => valeur $) {if ($ value [$ innerkey] == $ aiguille) {return $ key; }} –

+0

@Mark - merci, mon PHP est un peu rouillé - désolé! Edité et fait CW. –

1

posisible soultion:

function search_array($search,$array){ 
    $cnt=count($array); 
    for($i=0;$i<$array;$i++){ 
     if($search==$array[$i]['title']){ 
      return $i; 
     } 
    } 
} 
Questions connexes