在尝试使用多个 foreach 循环解决此问题后,我仍然不知道如何映射$arr
to $arr_mapped
我需要爆炸钥匙$arr
获取最多具有三个要创建的新键的元素$arr_mapped
<?php
$arr = [
'abc:quantity' => 1,
'abc:variant' => 'blue',
'xyz:quantity' => 2,
'foo:quantity' => null
];
$arr_mapped = [
[
'id' => 'abc',
'quantity' => 1,
'variant' => 'blue'
],
[
'id' => 'xyz',
'quantity' => 2,
]
];
背景:我想让用户批量添加预定义的购物项目<form>
它是一个定制的 PHP 商店。
<form>
<input name="abc:quantity" value="1">
<input name="abc:variant" value="blue">
<input name="xyz:quantity" value="2">
<input name="foo:quantity" value="">
<button>Submit</button>
</form>
感谢您的任何建议
我认为这将根据您在示例中提供的输入生成您想要的输出(这似乎与示例中的输出不匹配):
$arr = [
'abc:quantity' => 1,
'abc:variant' => 'blue',
'xyz:quantity' => 2,
'foo:quantity' => null
];
$arr_mapped = array_values(array_reduce(array_keys($arr), function($map, $key) use ($arr) {
[$id,$field] = explode(':', $key);
$map[$id]['id'] = $id;
$map[$id][$field] = $arr[$key];
return $map;
}, []));
result:
[
[
'id' => 'abc',
'quantity' => 1,
'variant' => 'blue'
],
[
'id' => 'xyz',
'quantity' => 1,
],
[
'id' => 'foo',
'quantity' => null,
]
];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)