在其 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);
您可以通过密钥获取它们并将它们存储在变量中。
$array1 = $varianti["pa_taglia"];
$array2 = $varianti["pa_colore"];
var_dump($array1);
var_dump($array2);
这里我使用你程序的 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/>";
}
我刚遇到这个问题。我有一个多维数组 ($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);
您可以通过密钥获取它们并将它们存储在变量中。
$array1 = $varianti["pa_taglia"];
$array2 = $varianti["pa_colore"];
var_dump($array1);
var_dump($array2);
这里我使用你程序的 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/>";
}