2011-10-19 6 views
0

Possible en double:
php. walk up multidimensional array?Rechercher un tableau multidimensionnel php

J'ai un arrray multidimensionnel qui contient des tableaux et des objets. Je dois chercher une valeur dedans. Comment puis-je faire?

view Object 
(
[db_table] => views_view 
[base_table] => users 
[args] => Array 
    (
    ) 

[use_ajax] => 
[result] => Array 
    (
    ) 

[pager] => Array 
    (
     [use_pager] => 
     [items_per_page] => 10 
     [element] => 0 
     [offset] => 0 
     [current_page] => 0 
    ) 

[old_view] => Array 
    (
     [0] => 
    ) 

[vid] => 1 
[name] => userone 
[description] => userone 
[tag] => 
[view_php] => 
[is_cacheable] => 0 
[display] => Array 
    (
     [default] => views_display Object 
      (
       [db_table] => views_display 
       [vid] => 1 
       [id] => default 
       [display_title] => Defaults 
       [display_plugin] => default 
       [position] => 1 
       [display_options] => Array 
        (

Comme cela, le tableau continue. Comment puis-je rechercher si une valeur existe?

+0

http://stackoverflow.com/questions/7750420/php-walk-up-multidimensional-array/7750829#7750829 – Teneff

Répondre

2

Si vous voulez seulement savoir si une certaine valeur existe et rien d'autre, cela est trivial en utilisant recursive iterators:

$found = false; 
foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) { 
    if ($value == 'theValueImLookingFor') { 
     $found = true; 
     break; 
    } 
} 

Ce n'est pas beaucoup plus complexe d'écrire cela dans une fonction récursive:

function recursive_in_array($array, $needle) { 
    foreach ($array as $value) { 
     $isIterable = is_object($value) || is_array($value); 
     if ($value == $needle || ($isIterable && recursive_in_array($value, $needle))) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

thanks.this est une bonne méthode pour la recherche de tableau. mais mon tableau contient à la fois des variables de tableau et des objets. cette fonction saute les objets. Donc je ne peux pas l'utiliser –

+1

Ensuite, vous devriez être capable d'étendre 'récursive_in_array' pour vérifier aussi' is_object' et permettre le passage des objets, ils peuvent aussi être itérés en utilisant 'foreach'. Je vais laisser ça en exercice pour vous. – deceze

+0

Expliquera-t-on –

Questions connexes