【问题标题】:Adding an array of values to an existing array将值数组添加到现有数组
【发布时间】:2017-06-13 13:35:41
【问题描述】:

我有一个 foreach,我根据表单中提交的选中复选框(即 `checkbox[$id])从 id 中创建一个数组。所以我最终得到:

其中 1、2 和 3 是表单中提交的 ID。到目前为止一切顺利。

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

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

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

【问题讨论】:

  • 也许使用array_combine
  • 没用过,我猜应该是这样!谢谢:)
  • 我很乐意提供帮助 :)
  • 如果数组的键只是数字而不是数组,array_combine 会有所帮助

标签: php arrays forms checkbox submit


【解决方案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]];
    }
}

只有当数组大小相等时,才能使用 cmets 中建议的 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

【讨论】:

  • 谢谢,正试图让它与array_combine 一起工作,但我会改用这种方法,看看它是否有效,似乎是一个更好的解决方案。
  • 在 laravel 中使用它就像一个带有一些调整的魅力。不错的解决方案!
猜你喜欢
  • 2014-10-17
  • 2016-05-03
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多