Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为foreach()循环提供的LAVEL参数无效_Php_Laravel_Foreach - Fatal编程技术网

Php 为foreach()循环提供的LAVEL参数无效

Php 为foreach()循环提供的LAVEL参数无效,php,laravel,foreach,Php,Laravel,Foreach,我有一个会话::获取“员工离开标签”;它包含工资单\休假\员工\ id,因为数据不是我在foreach循环中使用的唯一数据。但是我有一个错误 为foreach提供的参数无效 有人能帮我一下吗?我犯这个错误的原因是什么?谢谢 public function get_session_leave_tagv2() { $employee = [0 => 0]; if(Session::has('employee_leave_tag'))

我有一个会话::获取“员工离开标签”;它包含工资单\休假\员工\ id,因为数据不是我在foreach循环中使用的唯一数据。但是我有一个错误

为foreach提供的参数无效

有人能帮我一下吗?我犯这个错误的原因是什么?谢谢

     public function get_session_leave_tagv2()
     {
          $employee = [0 => 0];
          if(Session::has('employee_leave_tag'))
          {
               $employee = Session::get('employee_leave_tag');
          }

          $empdata = array();
          foreach($employee as $emp)
          {

                 $employee_id = Tbl_payroll_leave_employeev2::select('payroll_employee_id')
                                                          ->join('tbl_payroll_leave_schedulev2','tbl_payroll_leave_employee_v2.payroll_leave_employee_id','=','tbl_payroll_leave_schedulev2.payroll_leave_employee_id')
                                                          ->where('tbl_payroll_leave_schedulev2.payroll_leave_employee_id',$emp)
                                                          ->distinct()
                                                          ->get();

                    if(count($employee_id) == 0)
                    {
                         $empa = Tbl_payroll_employee_basic::join('tbl_payroll_leave_employee_v2','tbl_payroll_leave_employee_v2.payroll_employee_id','=','tbl_payroll_employee_basic.payroll_employee_id')->whereIn('tbl_payroll_leave_employee_v2.payroll_leave_employee_id',$emp)->get();
                         array_push($empdata,$empa);
                    }
                    else
                    {
                         $empb = Tbl_payroll_leave_schedulev2::getallemployeeleavedata($employee_id)->get();
                         array_push($empdata,$empb);
                    }                            

          }

          $data['new_record'] = $empdata;

          return json_encode($data);
     }

您需要在代码中做两个更改

第一个变化: 您的数组声明$employee=array;或$employee[]

第二个变化: 在编写foreach循环之前,最好使用if条件检查变量是否是数组而不是空的。这将使我们免于你所面临的错误

if(is_array($employee) && !empty($employee))
{
    foreach($employee as $emp)
    {
    }
}
试试这个

if (isset($employee) && count($employee) > 0) {
    if (is_array($employee)) {
        foreach($employee as $emp) {
            //display Array employee
        }
    } else {
        //display for NON Array employee
    }
}

请将$employee数组的输出与您的问题一起粘贴。您的第一个更改在第3行中声明!实际上,他声明了一个数组,其中包含一个条目array0=>0;还是我错了?@Dwza,最终他似乎想声明一个空数组。如果要声明索引为0的数组,则无需显式写入索引0,因为它默认从0开始。我知道,但解析器不会引发异常,因为语法实际上是正确的。猜一个var_转储也会显示一个数组。但这并不是一个空数组的声明。更像是一个糟糕的分配。还是我完全错了?我在打电话,所以我不能真正测试它:D