我有以下多维数组:
$userList = array(
0 => array('id' => 1000, 'first_name' => 'John', 'last_name' => 'Smith'),
1 => array('id' => 1001, 'first_name' => 'Sam', 'last_name' => 'Johnson'),
);
我想将它转换为数组:
$userData = array(
1000 => 'John Smith',
1001 => 'Sam Johnson',
);
对我来说很明显如何使用foreach循环实现它,但我想知道是否可以使用像array_map或array_walk这样的PHP数组函数来实现这一点。请使用PHP 5.3作为回调函数。谢谢!
答案 0 :(得分:4)
由于这些函数仅适用于数组值,因此让它们在新数组中设置键有点尴尬。一种方法是:
$arr = array_combine(
array_map(function ($i) { return $i['id']; }, $arr),
array_map(function ($i) { return "$i[first_name] $i[last_name]"; }, $arr)
);
这是foreach
更合适的情况。
答案 1 :(得分:1)
功能编程的一个小技巧。
$arr = array_reduce(
$arr,
function ($result, $item) {
$result[$item['id']] = $item['first_name'] . ' ' . $item['last_name'];
return $result;
},
array()
);
请参阅array_reduce()
。
答案 2 :(得分:0)
代码:
<?php
function convertArray ( $array ) {
$newUserList = array();
foreach ( $array as $value ) {
$newUserList[ $value[ 'id' ] ] = $value[ 'first_name' ] . ' ' . $value[ 'last_name' ];
}
return $newUserList;
}
$userList = array(
0 => array( 'id' => 1000, 'first_name' => 'John', 'last_name' => 'Smith' ),
1 => array( 'id' => 1001, 'first_name' => 'Sam', 'last_name' => 'Johnson' )
);
$newUserList = convertArray( $userList );
?>
输出:
Array
(
[1000] => John Smith
[1001] => Sam Johnson
)