2015-04-07 1 views
0

J'ai un grand tableau multidimensionnel renvoyé par un fichier JSON. Je dois être capable de le filtrer en fonction d'un terme de recherche.PHP Multidimensional Array Filtering

Array 
(
    [timeline] => Array 
     (
      [type] => default 
      [date] => Array 
       (
        [0] => Array 
         (
          [startDate] => 2014 
          [endDate] => 
          [headline] => AA 
          [text] => Lorem Ipsum 
          [asset] => Array 
           (
            [media] => IMAGE_URL 
            [thumbnail] => 
            [credit] => Public Domain, Wikimedia Commons 
            [caption] => CAPTION_TITLE 
           ) 

         ) 
//...and so on 

Je dois être en mesure de filtrer aussi bien pour les text et headline clés, et le retour des valeurs contenant seulement une chaîne donnée.

+1

Vous avez donc besoin de rechercher dans un tableau multidimensionnel, qu'avez-vous essayé? Avez-vous googlé, je suis sûr que vous n'êtes pas le premier à chercher dans un tableau. – Daan

+0

J'ai essayé d'utiliser plusieurs fonctions de base array_filter, mais je ne peux pas trouver quelque chose qui fonctionne pour un tableau multidimensionnel. Je suis nouveau à PHP et cherchait une solution plus adaptée à ce tableau particulier. – wbd2292

Répondre

0

Comme ça?

foreach($array['timeline']['date'] as $entry){ 
    if(strpos($entry['headline'],$needle) === false || strpos($entry['text'],$needle) === false){ 
     // nicht gefunden 
    }else{ 
     // gefunden 
    } 
} 

il est important d'utiliser === que le résultat pourrait être faux ou 0 si l'aiguille est int il au début de la chaîne. Avec == ce serait la même chose.

+0

Cela aide, mais il a besoin de conserver la structure originale du tableau: Tableau ( [timeline] => array ( [type] => default [date] => array ( // seulement return subarrays contenant le terme correspondant – wbd2292

+0

Il a toujours le même caractère mais ne fait partie que du tableau Si vous voulez accéder à des parties du tableau plus haut dans la hiérarchie, vous pouvez utiliser les touches: 'foreach ($ array as $ key => $ entry) {} '. Vous pourriez avoir besoin de splisser la boucle pour obtenir des clés pour les différents niveaux de votre tableau. – DocRattie