2016-08-03 241 views
0

我剛剛遇到此問題。我有一個多維數組($ varianti),看起來像這樣:拆分多維數組的子數組

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

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

) 

我需要的是讓不同陣列的每個子陣列,所以我需要這樣的結果:

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

的主要問題是我可以根據需要獲取儘可能多的子數組(這是爲了讓我的Woocommerce插件從屬性創建product_variations),因此它需要靈活。

這是我想出了一個代碼(2小時後...):

$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 
     } 

我希望這可能是幫助任何人。

+2

我不確定問題是什麼?如果你有自己的答案的解決方案,那麼你應該發佈它作爲一個答案,而不是延長你的問題。 – Epodax

回答

1

可以使用extract功能,會自動創建新的變量基礎上的鍵值:

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

你可以使用PHP的extract()功能。此函數以可變格式提取數組。

考慮這是$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); 

有關更多詳細信息請參考http://php.net/manual/en/function.extract.php

0

您可以只用鑰匙讓他們並將其存儲在一個變量。

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

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

容易得多。謝謝! –

+0

如果這是你使用的答案,你可以接受它,歡呼:) – RemanBroder