簡體   English   中英

在其sub_arrays中拆分多維數組

[英]Split multidimensional array in its sub_arrays

我剛遇到這個問題。 我有一個多維數組($ 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
        }

我希望這對任何人都有幫助。

您可以使用extract功能,該功能將根據鍵值自動創建新變量:

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

您可以使用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/zh/function.extract.php

您可以通過鍵獲取它們並將它們存儲在變量中。

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

var_dump($array1);
var_dump($array2);

在這里,我使用get_defined_vars();獲得了所有全局變量get_defined_vars(); 您的程序,顯然是多維數組。 之后,我使用array_keys($orignalArr);訪問它們的密鑰array_keys($orignalArr); 然后最后按其鍵值顯示每個子數組。

$orignalArr = get_defined_vars();
$keyArr=array_keys($orignalArr);
$arrCount=sizeof($keyArr);
echo  "Values of keys<br><br>";
for($i=0;$i<$arrCount;$i++)
{
echo "<br/>";
print_r($keyArr[$i]);
echo "==";
print_r($orignalArr[$keyArr[$i]]);
echo "<br/>";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM