2017-10-19 4 views
-1

Je cherche une solution pour aplatir un tableau multidimensionnel variable pour aplatir toutes les valeurs du dernier tableau disponible en un seul Array[] (contenant l'ensemble de données de chaque dernier tableau du tableau multidimensionnel).Tableau multi-dimensionnel à niveau variable pour valoriser le tableau 'flattend' avec PHP?

Toute aide est appréciée!

Il se distingue des questions

Parce que le résultat de fin devrait être une collection de tous Arrays contenant:

array(
    'title' => xx, 
    'id' => xx 
) 

répertoriés dans les différents tableaux multidimensionnels. Les différents éléments ont tous fixé keys: title et id.

tableau de base de l'échantillon

$data = array(
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     array(
      array(
       'title' => xx, 
       'id' => xx 
      ), 
      array(
       'title' => xx 
       'id' => xx 
      ) 
     ) 
    ), 
    array(
     array(
      array(
       array(
        'title' => xx, 
        'id' => xx 
       ), 
       array(
        'title' => xx, 
        'id' => xx 
       ), 
       array(
        'title' => xx, 
        'id' => xx 
       ) 
      ) 
     ), 
     array(
      'title' => xx, 
      'id' => xx 
     ), 
     array(
      array(
       array(
        array(
         'title' => xx, 
         'id' => xx 
        ) 
       ) 
      ) 
     ) 
    ) 
); 

Faut-il flattend à

$data = array(
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ), 
    array(
     'title' => xx, 
     'id' => xx 
    ) 
); 
+0

Ce n'est pas une copie de cette question .... qui aplatit le tableau pour chaque touche ' 'Entité ... Je veux que le tableau de' key'/'values' soit gardé ... –

+0

Il y a [des centaines de" flatten array "que stions] (https://stackoverflow.com/search?q=%5Bphp%5D+flatten+array). Qu'est-ce que vous avez spécifiquement essayé, sur quoi êtes-vous collé et comment votre problème diffère-t-il des autres? – deceze

+0

et http://idownvotedbecau.se/nocode/ Aidez-vous, nous allons regarder vos tentatives. Lire sur foreach pour le tableau, et is_array pour savoir si la valeur est un tableau ou une chaîne. Descendez sur un tableau, gardez la clé et la valeur sinon. – Nic3500

Répondre

1
function flatten_array(&$data) { 

    foreach ($data as $index => &$item) { 

     if(has_array_child($item)) { 
      unset($data[$index]); 
      flatten_array($item); 
      $data = array_merge($data, $item); 
     } 

    } 

} 

function has_array_child($item) { 
    foreach($item as $child) { 
     if(is_array($child)) { 
      return TRUE; 
     } 
    } 

    return FALSE; 
} 

flatten_array($data); 

print_r($data); 
+0

Oui, parfait! Merci beaucoup! Comme requis! –

+0

pas nécessaire, $ données transmises par référence. –

+0

Mon mauvais, négligé celui-là! Merci encore .. –