2016-01-26 2 views
0

Im essayant de déposant sur seulement les parties de ce tableau - par [canal] (comme celui-ci):Tableau Multidimensional Filtrage [PHP]

Array 
(
    [0] => Array 
     (
      [268a9d2d25fc2b9765c7cd7b8a768d3e] => Array 
       (
        [dj_name] => Emilian 
        [channel] => techno 
       ) 

      [5d1838c3aa6344e3109ab4f0122492f7] => Array 
       (
        [dj_name] => Emilian 
        [channel] => trance 
       ) 
     ) 

    [1] => Array 
     (
      [e13268de7c56db42f8aeab2ab4c607f2] => Array 
       (
        [dj_name] => John Doe    
        [channel] => trance 

       ) 

      [1aa81b7b123321f79571828600db0f08] => Array 
       (
        [dj_name] => John Doe 
        [channel] => techno 
       ) 

     ) 

donc les résultats devraient être (si le canal est transe):

Array 
(
    [0] => Array 
     (

      [5d1838c3aa6344e3109ab4f0122492f7] => Array 
       (
        [dj_name] => Emilian 
        [channel] => trance 
       ) 
     ) 

    [1] => Array 
     (
      [e13268de7c56db42f8aeab2ab4c607f2] => Array 
       (
        [dj_name] => John Doe    
        [channel] => trance 

       ) 


     ) 

... J'ai essayé avec des boucles foreach ... à unset mais na pas avoir beaucoup aussi avec succès .. array_filter ...

avec foreach j'ai essayé comme ça (mais je ne sais pas comment mettre à jour le $ show_data tableau une fois boucle fermée est e ... hmm im pretty vert à php:

foreach($show_data as $idindex => $codearray){ 
      foreach($codearray as $codestring => $paramarray) {  
         foreach($paramarray as $param => $val) {  
           if(preg_grep('/trance/', $paramarray)){ 
            unset($paramarray[$val]); 
            }}}} 
     print_r($show_data); 

Et j'ai aussi essayé avec (mais si le premier est alors transe il ne marche pas filtrer le reste .. même si elles sont techno .. . i besoin de filtrer au niveau [5d1838c3aa6344e3109ab4f0122492f7]):

$genre = 'trance'; 
$data = array_filter($dataraw, function($fs) use ($genre) { 
return current($fs)['channel'] === $genre; 
}); 

Merci à l'avance!

+0

Essayez 'si (preg_grep ('/ trance /', $ val)) {' – RiggsFolly

Répondre

0

Essayez ceci: il va vous hepl.

$output_array(); 
$i = 0; 
foreach ($show_data as $data) { 
    foreach ($data as $subdata) { 
     if ($subdata['channel'] == 'trance') { 
      $output_array[$i] = $subdata; 
     } 
    } 
    $i++; 
} 

echo '<pre>'; 
print_r($output_array); 
die; 
+0

résolu avec: –

0

Essayez ce code: -

$result = []; 
     foreach($arr as $key=>$val){ 
       foreach($val as $k=>$v){ 
        if($v['channel']=='trance'){ 
         $result[$k] = $v; 
        } 
       } 
     } 

    echo '<pre>'; print_r($result); 

sortie: -

Array 
(
    [5d1838c3aa6344e3109ab4f0122492f7] => Array 
     (
      [dj_name] => Emilian 
      [channel] => trance 
     ) 

    [e13268de7c56db42f8aeab2ab4c607f2] => Array 
     (
      [dj_name] => John Doe 
      [channel] => trance 
     ) 

) 
+0

Merci les gars! –