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

时间:2012-06-03 22:22:39

标签: php

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

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感兴趣。

4 个答案:

答案 0 :(得分:3)

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'];
}

答案 1 :(得分:1)

我没有测试过这个功能,但请尝试这个建议:http://www.php.net/manual/en/function.array-values.php#104184

答案 2 :(得分:1)

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

为什么这项工作很棘手。老实说,只需使用foreach循环。

答案 3 :(得分:1)

继续@Mickael's answer,您还可以使用array_walk()功能:

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

array_walk($arr, "format");

或者在lambda函数的一行中:

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

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