传递给递减方法的非数字值

时间:2017-11-25 11:06:13

标签: php arrays laravel foreach

foreach($menuItem1 as &$a){
  $a = $a*$amount;
}

$numArray = array_map('intval', $menuItem1);

foreach($menuItem2 as $in){
    DB::table('ingredients')->where('id', $in)->decrement('ingredient_stock', $numArray);
}

$ numArray的结果:
array(3){[0] => int(6)[1] => int(8)[2] => int(24)} array(2){[0] => int(1)[1] => int(2)}

我想运行查询,但得到此错误:传递给减量方法的非数字值。为什么呢?

2 个答案:

答案 0 :(得分:0)

减量方法中传递要减少多少的值。

请尝试以下操作。

$num_i = 0;
foreach($menuItem2 as $in){
    DB::table('ingredients')->where('id', $in)->decrement('ingredient_stock', $numArray[$num_i]);
    $num_i = $num_i + 1;
}

答案 1 :(得分:0)

decrement需要一个数值,一个数字,而不是一个数字数组。

您需要重新构建$numArray。你可以把它变成一个关联数组,菜单项id为关键[ $menuItem1ID => valueForMenuItem1, $menuItem2ID => valueForMenuItem2, ]

然后在你的循环而不是->decrement('ingredient_stock', $numArray);->decrement('ingredient_stock', $numArray[$in]);