自:
$arr = array(array('key1'=>'A',...),array('key1'=>'B',...));
为:
array('A','B',..);
答案 0 :(得分:1)
$output = array();
foreach ($arr as $array_piece) {
$output = array_merge($output, $array_piece);
}
return array_values($output);
另一方面,如果你想要每个数组的第一个值,你想要的是......
$output = array();
foreach ($arr as $array_piece) {
$output[] = array_unshift($array_piece);
}
但我想你想要第一个。
答案 1 :(得分:0)
通过循环进行相对简单的转换:
$newArray = array()
foreach ($arr as $a) {
foreach ($a as $key => $value) {
$newArray[] = $value;
}
}
或者,或许更优雅:
function flatten($concatenation, $subArray) {
return array_merge($concatenation, array_values($subArray));
}
$newArray = array_reduce($arr, "flatten", array());
约翰的解决方案也很好。
答案 2 :(得分:0)
这样的事情应该有效
<?
$arr = array(array('key1'=>'A','key2'=>'B'),array('key1'=>'C','key2'=>'D'));
$new_array = array();
foreach ($arr as $key => $value) {
$new_array = array_merge($new_array, array_values($value));
}
var_export($new_array);
?>
如果您想要主阵列中每个数组中的所有值。
答案 3 :(得分:0)
function collapse($input) {
$buf = array();
if(is_array($input)) {
foreach($input as $i) $buf = array_merge($buf, collapse($i));
}
else $buf[] = $input;
return $buf;
}
上面是一个修改过的非平台功能,也可以使用:
function unsplat($input, $delim="\t") {
$buf = array();
if(is_array($input)) {
foreach($input as $i) $buf[] = unsplat($i, $delim);
}
else $buf[] = $input;
return implode($delim, $buf);
}
$newarray = explode("\0", unsplat($oldarray, "\0"));