将值数组添加到现有数组

时间:2017-01-27 19:07:52

标签: php arrays forms checkbox submit

我有一个foreach,我根据我的表单中提交的选中复选框创建了一个数组的数组(这是`checkbox [$ id]。所以我最终得到:< / p>

Checkboxes

其中1,2和3是表单中提交的ID。到目前为止一切都很好。

现在我的表单中还有一个输入字段amount[$id]。选中复选框时,我可以输入该行的金额并提交结果。如果是id,我需要将amount的值添加到我的数组中。我的最终结果应如下所示:

[1 => ['amount' => '10'], 2 => ['amount' => '12'], 3 => ['amount' => '5'] // And so on

我尝试合并和array_push,但我似乎做错了,因为我无法弄明白。有什么指针吗?

1 个答案:

答案 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