2016-08-03 23 views
0

Ich habe gerade dieses Problem. Ich habe ein mehrdimensionales Array ($ varianti), die wie folgt aussieht:Split multidimensional Array in seinen sub_arrays

Array 
(
    [pa_taglia] => Array 
     (
      [0] => l 
      [1] => m 
     ) 

    [pa_colore] => Array 
     (
      [0] => blu 
      [1] => giallo 
      [2] => rosso 
     ) 

) 

Was ich brauche, ist verschiedene Arrays für jedes Subarray zu bekommen, damit ich dieses Ergebnis benötigen:

Array 
(
    [0] => l 
    [1] => m 
) 
Array 
(
    [0] => blu 
    [1] => giallo 
    [2] => rosso 
) 

Das Hauptproblem ist, dass ich so viele Sub-Arrays wie nötig bekommen kann (dies ist für mein Woocommerce-Plugin, um product_variations von Attributen zu erstellen), also muss es flexibel sein.

Dies ist der Code kam ich mit (nach 2 Stunden ...):

$keys = array_keys($varianti);//get the main keys 

     //split multidimensional array in sub arrays 
     foreach ($keys as $key=>$val){   
      $nr_var[$val]= count($varianti[$keys[$key]]);//create array such as array('key1'=> qty1, 'key2'=> qty2); 
      $$val = $varianti[$keys[$key]];//create a variable variable from key 
     } 
     print_r($nr_var); 
     foreach ($nr_var as $chiave=>$valore){ 
      print_r($$chiave);//retrieve values calling variable variable 
     } 

Ich hoffe, dies jedem von Hilfe sein kann.

+2

Ich bin mir nicht sicher, was die Frage ist? Wenn Sie die Lösung für Ihre eigene Antwort haben, sollten Sie sie als Antwort anstelle einer Erweiterung Ihrer Frage posten. – Epodax

Antwort

1

können Sie extract Funktion, die automatisch neue Variablen auf den Schlüsselwerten basieren schaffen:

extract($varianti); 
var_dump($pa_colore); 
0

Sie extract() Funktion von PHP nutzen können. Diese Funktion extrahiert Array im Variablenformat.

Betrachten wir dies in $main_array

Array 
(
    [pa_taglia] => Array 
     (
      [0] => l 
      [1] => m 
     ) 

    [pa_colore] => Array 
     (
      [0] => blu 
      [1] => giallo 
      [2] => rosso 
     ) 

) 

extract($main_array); 

print_r($pa_taglia); 
print_r($pa_colore); 

Für weitere Einzelheiten siehe http://php.net/manual/en/function.extract.php

0

Sie können sie nur durch Schlüssel erhalten und speichern sie in einer Variablen.

$array1 = $varianti["pa_taglia"]; 
$array2 = $varianti["pa_colore"]; 

var_dump($array1); 
var_dump($array2); 
+0

viel einfacher. Vielen Dank! –

+0

Wenn dies die Antwort ist, die Sie verwendet haben, können Sie es akzeptieren, Prost :) – RemanBroder