首页 > 解决方案 > 将具有索引和值的数组转换为数组

问题描述

我有一个数组作为键 => 值对,例如:

$array = [ 10 => 'Windows', 12 => 'Keyboard', 15 => 'Monitor' ]; 

我想在不使用任何 foreach 或循环的情况下实现以下目标:

$converted = [ 
  0 => [ 'id' => 10, 'name' => 'Windows'],
  1 => [ 'id' => 12, 'name' => 'Keyboard'],
  2 => [ 'id' => 15, 'name' => 'Monitor']
];

在这里,它们在新数组中的索引无关紧要。有小费吗??

标签: phparrays

解决方案


没有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 ];
}

推荐阅读