我的脚本返回了以下数组。
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"];'));
它直接与您的数组一起使用,因此我们可以轻松地将其称为"数组转换"。