如何从多维数组转换为一维数组


How to convert from from multiple-dimension array to one-dimension array?

我的脚本返回了以下数组。

Array
(
    [0] => Array
        (
            [id] => 67
        )
    [1] => Array
        (
            [id] => 68
        )
    [2] => Array
        (
            [id] => 69
        )
    [3] => Array
        (
            [id] => 70
        )
)

如何将其转换为:

Array
(
    [0] => 67
    [1] => 68
    [2] => 69
    [3] => 70
)

我只对返回的 ID 感兴趣。

array_map()是一种可能性,因为它将回调返回的任何值累积到其返回的数组中。然后回调只需要返回id

$flat = array_map(function($a) {return $a['id'];}, $orig_array);

上面需要 PHP 5.3+,因为它使用匿名函数,但也可以通过作为字符串传递给 array_map() 的命名函数来实现相同的目标。

否则,foreach循环是非常传统的,可以保留原始键,然后是非顺序的。

$flat = array();
foreach ($orig_array as $key => $a) {
  $flat[$key] = $a['id'];
}

我还没有测试过这个函数,但试试这个建议:http://www.php.net/manual/en/function.array-values.php#104184

$temp = call_user_func_array('array_merge_recursive', $arr);
$final = $temp['id'];
print_r($final);

为什么会这样是很棘手的。老实说,只需使用 foreach 循环即可。

继续@Mickael的回答,你也可以使用array_walk()函数:

function format(&$item, $key) {
    $item = $item["id"];
}
array_walk($arr, "format");

或者在一行中带有 lambda 函数:

array_walk($arr, create_function('&$item, $key', '$item = $item["id"];'));

它直接与您的数组一起使用,因此我们可以轻松地将其称为"数组转换"。