php 从多维关联数组中获取所有值
php Get all values from multidimensional associative array
如何从多维关联数组中获取所有值
我不想使用 print_r 想控制我的数组 将所有值放在具有唯一值的普通数组中
我的数组看起来像这样
array (size=10)
0 =>
array (size=3)
0 =>
array (size=1)
'Campaign' => string 'DEMO' (length=4)
1 =>
array (size=1)
'Campaign' => string 'Home_Sec' (length=8)
2 =>
array (size=1)
'Campaign' => string '' (length=0)
1 =>
array (size=0)
empty
2 =>
array (size=0)
empty
3 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'Back_Brace' (length=10)
4 =>
array (size=2)
0 =>
array (size=1)
'Campaign' => string 'Home_Sec' (length=8)
1 =>
array (size=1)
'Campaign' => string '' (length=0)
5 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'home_Sec_2' (length=10)
6 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'Burial_Ins' (length=10)
7 =>
array (size=0)
empty
8 =>
array (size=0)
empty
9 =>
array (size=0)
empty
我不想使用 print_r 想控制我的数组 将所有值放入具有唯一值的普通数组中
您可以使用array_walk
$array = array(...); //your values here
function output($item, $key) {
echo $key . ' =>' . $item;
}
array_walk($array, 'output');
你是问如何将这个多维数组"flatten"变成一维数组?类似问题的可能解决方案... How to Flatten a Multidimensional Array?
array_walk
是一个选项,但如果您想尝试自己编码更多的东西,这是另一个选项,可以递归地解决这个问题
这会将任何 n-max 级数组展平为一个包含所有子数组(包括初始数组本身)的所有值的单个数组
<?php
$array = array(
1 => array(1, 2, 3, 4 => array(
1, 2, 3, 4
)),
4, 5);
function recurse_values($array) {
if (is_array($array)) {
$output_array = array();
foreach ($array as $key=>$val) {
$primitive_output = recurse_values($val);
if (is_array($primitive_output)) {
$output_array = array_merge($output_array, $primitive_output);
}
else {
array_push($output_array, $primitive_output);
}
}
return $output_array;
}
else {
return $array;
}
}
print_r(recurse_values($array));
?>
如果您需要唯一值,您可以在末尾添加一个 array_unique 来执行此操作。
如何从多维关联数组中获取所有值 我不想使用 print_r 想控制我的数组 将所有值放在具有唯一值的普通数组中 我的数组看起来像这样
array (size=10)
0 =>
array (size=3)
0 =>
array (size=1)
'Campaign' => string 'DEMO' (length=4)
1 =>
array (size=1)
'Campaign' => string 'Home_Sec' (length=8)
2 =>
array (size=1)
'Campaign' => string '' (length=0)
1 =>
array (size=0)
empty
2 =>
array (size=0)
empty
3 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'Back_Brace' (length=10)
4 =>
array (size=2)
0 =>
array (size=1)
'Campaign' => string 'Home_Sec' (length=8)
1 =>
array (size=1)
'Campaign' => string '' (length=0)
5 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'home_Sec_2' (length=10)
6 =>
array (size=1)
0 =>
array (size=1)
'Campaign' => string 'Burial_Ins' (length=10)
7 =>
array (size=0)
empty
8 =>
array (size=0)
empty
9 =>
array (size=0)
empty
我不想使用 print_r 想控制我的数组 将所有值放入具有唯一值的普通数组中
您可以使用array_walk
$array = array(...); //your values here
function output($item, $key) {
echo $key . ' =>' . $item;
}
array_walk($array, 'output');
你是问如何将这个多维数组"flatten"变成一维数组?类似问题的可能解决方案... How to Flatten a Multidimensional Array?
array_walk
是一个选项,但如果您想尝试自己编码更多的东西,这是另一个选项,可以递归地解决这个问题
这会将任何 n-max 级数组展平为一个包含所有子数组(包括初始数组本身)的所有值的单个数组
<?php
$array = array(
1 => array(1, 2, 3, 4 => array(
1, 2, 3, 4
)),
4, 5);
function recurse_values($array) {
if (is_array($array)) {
$output_array = array();
foreach ($array as $key=>$val) {
$primitive_output = recurse_values($val);
if (is_array($primitive_output)) {
$output_array = array_merge($output_array, $primitive_output);
}
else {
array_push($output_array, $primitive_output);
}
}
return $output_array;
}
else {
return $array;
}
}
print_r(recurse_values($array));
?>
如果您需要唯一值,您可以在末尾添加一个 array_unique 来执行此操作。