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
        }

我希望这对任何人都有帮助。

4

4 回答 4

2

您可以使用extract将根据键值自动创建新变量的函数:

extract($varianti);
var_dump($pa_colore);
于 2016-08-03T10:17:06.380 回答
1

你可以使用extract()PHP的功能。此函数以可变格式提取数组。

考虑这是在$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

于 2016-08-03T10:19:49.213 回答
0

在这里,我使用get_defined_vars();了您的程序的所有全局变量,您显然是多维数组。之后,我可以访问他们的密钥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/>";
}
于 2018-11-05T09:55:14.017 回答
0

您可以通过密钥获取它们并将它们存储在变量中。

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

var_dump($array1);
var_dump($array2);
于 2016-08-03T10:50:28.250 回答