php - 将具有索引和值的数组转换为数组
问题描述
我有一个数组作为键 => 值对,例如:
$array = [ 10 => 'Windows', 12 => 'Keyboard', 15 => 'Monitor' ];
我想在不使用任何 foreach 或循环的情况下实现以下目标:
$converted = [
0 => [ 'id' => 10, 'name' => 'Windows'],
1 => [ 'id' => 12, 'name' => 'Keyboard'],
2 => [ 'id' => 15, 'name' => 'Monitor']
];
在这里,它们在新数组中的索引无关紧要。有小费吗??
解决方案
没有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 ];
}
推荐阅读
- swift - 如何让继承作用于闭包内的参数?
- sql - 计算订阅者的调用频率 SQL Netezza
- mysql - mysql db的分片配置
- python - Python SpeechRecognition 逐字逐句?连续输出?
- c - 使用 << 和 + 重写 C 表达式
- javascript - 如何使用外部js文件在表单提交上调用函数
- java - 如何在 Java 中将 RGB 颜色转换为十六进制
- bash - Grep方法删除文件中与其他文件中的任何行匹配的所有行?
- perl - 根据 perl 中的标题对 CSV 列值进行排序
- node.js - 对node.js服务器的axios请求不返回数据