哪种方法是转换多维数组的最佳方法
Array ( [0] => Array ( [id] => 11 ) [1] => Array ( [id] => 14 ) )
变成一个简单的数组? 编辑“扁平”数组(感谢arxanas为正确的单词)
Array ( [0] => 11 [1] => 14 )
我看到了一些例子,除了foreach循环,内爆或大函数之外还有更简单的方法吗?肯定有一个PHP函数来处理这个问题。或者不..?
答案 0 :(得分:3)
$array = array();
$newArray = array();
foreach ( $array as $key => $val )
{
$temp = array_values($val);
$newArray[] = $temp[0];
}
在此处查看:[{3}}
您可以在函数形式中使用它:
function array_flatten ( $array )
{
$out = array();
foreach ( $array as $key => $val )
{
$temp = array_values($val);
$out[] = $temp[0];
}
return $out;
}
在此处查看:[{3}}
答案 1 :(得分:1)
如果你有一个不应该是多维数组的多维数组(具有相同的键和值)并且它有多个维度深度,你可以使用递归来遍历它并将每个项目附加到一个新数组。请确保不要头疼:)
答案 2 :(得分:1)
您可以使用array_walk_recursive展平数组。
$ret = array();
array_walk_recursive($arr, function($var) use (&$ret) {
$ret[] = $var;
});
var_dump($ret);
答案 3 :(得分:0)
这是一个例子。 (它可能不像xdazz那样“优雅”,但它是一个不使用“use”闭包的替代品。)这就是数组的开头方式:
开始强>
array (size=2)
0 =>
array (size=1)
'woeid' => string '56413072' (length=8)
1 =>
array (size=1)
'woeid' => string '56412936' (length=8)
然后你可能想要这样的东西:
:定位强>
array (size=2)
0 => string '56413072' (length=8)
1 => string '56412936' (length=8)
您可以使用array_walk_recursive
<强>代码强>
$woeid = array();
array_walk_recursive($result['results']['Result'], function ($item, $key, $woeid) {
if ($key == 'woeid') {
$woeid[] = $item;
}
}, &$woeid);