如何使用PHP以这种方式获取数组中的值?

时间:2009-11-20 04:23:02

标签: php arrays

自:

$arr = array(array('key1'=>'A',...),array('key1'=>'B',...));

为:

array('A','B',..);

4 个答案:

答案 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"));