将带有键的数组转换为其他格式的最简单方法是什么


What is the easiest way to convert array with keys to other format

我有以下数组:

Array
(
    [key1] => 10
    [key2] => 7
    [key3] => 8
)

我想将其转换为以下结构:

Array
(
    [0] => Array
        (
            [section] => key1
            [quantity] => 10
        ),
    [1] => Array
        (
            [section] => key2
            [quantity] => 7
        ),
    [2] => Array
        (
            [section] => key3
            [quantity] => 8
        )
)

我尝试使用array_map函数,但在闭包中我只得到一个没有键的值。请给我推荐最简单的方法,不用foreach

更新
我认为使用foreach需要创建一个额外的变量,这会使代码变得混乱和需要资源。

尝试使用array_walk作为

$result = array();
array_walk($arr, function ($v,$k) use(&$result) {
     $result[] = array('section' => $k, 'quantity' => $v);
});

使用array_walk的演示

使用foreach

$result = array();
foreach($arr as $key => $value){
    $result[] = array('section' => $key, 'quantity' => $value);
}
print_r($result);

使用foreach的演示

没有理由不使用foreach。最好的解决方案是:

$cookedArray = [];
foreach ($rawArray as $key => $value)
{
    $cookedArray [] = ["section" => $key, "quantity" => $value];
}
$previous_array=array(
    'key1' => 10,
    'key2' => 7,
    'key3' => 8,
);
$new_array=array();
foreach($previous_array as $key => $value):
    $new_array[]=array('section'=>$key,'quantity'=>$value);
endforeach;
Print_r($new_array);

输出:

Array
(
    [0] => Array
        (
            [section] => key1
            [quantity] => 10
        )
    [1] => Array
        (
            [section] => key2
            [quantity] => 7
        )
    [2] => Array
        (
            [section] => key3
            [quantity] => 8
        )
)

关于更新的需求,我自己已经找到了这个解决方案:

$section = array_map(function ($key,$value) {
    return ['section' => $key, 'quantity' => $value];
}, array_keys($section), array_values($section));

唯一关心的是键和值。现在我正在测试,它不会互相干扰吗?我的意思是密钥与值混合?

更新
它运行良好。感谢@Halcyon在评论中的点赞。以及所有其他提出解决方案的人。