1

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

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

4 回答 4

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'];
}
于 2012-06-03T22:25:32.813 回答
1

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

于 2012-06-03T22:26:19.367 回答
1
$temp = call_user_func_array('array_merge_recursive', $arr);
$final = $temp['id'];
print_r($final);

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

于 2012-06-03T22:28:17.893 回答
1

继续@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"];'));

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

于 2012-06-03T22:28:24.683 回答