我有一个foreach,我根据我的表单中提交的选中复选框创建了一个数组的数组(这是`checkbox [$ id]。所以我最终得到:< / p>
其中1,2和3是表单中提交的ID。到目前为止一切都很好。
现在我的表单中还有一个输入字段amount[$id]
。选中复选框时,我可以输入该行的金额并提交结果。如果是id,我需要将amount
的值添加到我的数组中。我的最终结果应如下所示:
[1 => ['amount' => '10'], 2 => ['amount' => '12'], 3 => ['amount' => '5'] // And so on
我尝试合并和array_push,但我似乎做错了,因为我无法弄明白。有什么指针吗?
答案 0 :(得分:1)
这样的事情应该有效:
$result = [];
$ids = [1,2,3]; // I suppose it is `$_POST['ids']`
$amounts = [1 => 10, 2 => 11, 3 => 22]; // I suppose it is `$_POST['amount']`
foreach ($ids as $id) {
if (!empty($amounts[$id])) {
$result[$id] = ['amount' => $amounts[$id]];
}
}
只有在数组大小相等的情况下,才能使用注释中建议的array_combine
。所以如果你有类似的东西:
$ids = [1,2,4];
$amounts = [1 => 10, 2 => 11, 3 => 0, 4 => 22];
print_r(array_combine($ids, $amounts)); // PHP Warning
第二个事实 - array_combine
不会将值创建为数组。所以
$ids = [1,2,3];
$amounts = [1 => 10, 2 => 11, 3 => 10];
print_r(array_combine($ids, $amounts)); // no subarrays here