2015-03-31 92 views
1

Hello你好,这是我在控制器中的代码。而这个foreach循环用于添加新行。所以当我不添加新行时,我得到的错误称为foreach提供的无效参数()我知道发生错误,因为该行正在发送空值,但我不知道这个解决方案。这个你能帮我吗。非常感谢。每一个帮助和评论表示赞赏。 :)为foreach提供了无效的参数() - Laravel 4.2

$total_add_more = 0; 

     foreach($add_more_line as $each_key => $each_val) { 

      if($add_more_year_button[$each_key] == 'month'){ 

       $total_add_more += $each_val; 
      }else { 
       $total_add_more += $each_val * 12; 
      } 

     } 
+1

我认为它是 '空' 现象?你可以将它'作为一个数组转换'即:_'foreach((array)$ add_more_line as ...'_这将保持'foreach循环''开心' – 2015-03-31 11:53:19

回答

0

难道你不只是检查$add_more_line变量之前做foreach?

if ($add_more_line) 
{ 
    // your code 
} 
1

始终$add_more_line应该执行foreach阵列。请执行以下其中一项操作来防止此错误。

  1. 检查与is_array变量如果是这样,你可以执行foreach
  2. 作为Ryan说丢在里面froeach
  3. 在分配值之前初始化Controller中的数组。

代码:

if(is_array($add_more_line)){ 
    // Do the job 
} 

foreach((array)$add_more_line as $each_key => $each_val){ 
    // Code 
} 

$add_more_line = array(); 
+0

Hello @Eranda :)这工作得很好,是最好的方法。非常感谢 – Siddharth 2015-03-31 13:52:47

+1

使用'is_array'检查有时可以,但并非总是如此。您可以将实现[Traversable Interface](http://php.net/manual/en/class.traversable.php)的对象传递给foreach,而不仅仅是数组... – lukasgeiter 2015-03-31 13:58:37

+0

谢谢@lukasgeiter :)。我不知道可穿越接口。 – Eranda 2015-03-31 14:01:36

相关问题