我有一个数组作为键=>值对,例如:
$array = [ 10 => 'Windows', 12 => 'Keyboard', 15 => 'Monitor' ];
在不使用任何foreach的情况下我想实现的目标或循环以下操作:
$converted = [
0 => [ 'id' => 10, 'name' => 'Windows'],
1 => [ 'id' => 12, 'name' => 'Keyboard'],
2 => [ 'id' => 15, 'name' => 'Monitor']
];
这里它们在新数组中的索引无关紧要。有什么提示吗?
答案 0 :(得分:2)
没有foreach
也没有循环,但是现在有一个闭包:
$result = array_map(function ($id, $name) {
return [
'id' => $id,
'name' => $name
];
}, array_keys($array), array_values($array));
即使有一个PHP函数完全做到了这一点,它也会在内部使用循环。
function do_what_ghazanfar_mir_wants(array $array) {
return array_map(function ($id, $name) {
return [
'id' => $id,
'name' => $name
];
}, array_keys($array), array_values($array));
}
单个衬里是:
$result = do_what_ghazanfar_mir_wants($array);
和foreach
进行比较的方法:
$res = [];
foreach ($array as $id => $name) {
$res[] = [ 'id' => $id, 'name' => $name ];
}
答案 1 :(得分:2)
如果您想使其真正短,那么array_walk
将在一行中完成:
array_walk($array, function(&$value, $key) { $value = ['id' => $key, 'name' => $value]; });
但是我认为foreach循环可能更具可读性。