Php 为foreach()循环提供的LAVEL参数无效
我有一个会话::获取“员工离开标签”;它包含工资单\休假\员工\ id,因为数据不是我在foreach循环中使用的唯一数据。但是我有一个错误 为foreach提供的参数无效 有人能帮我一下吗?我犯这个错误的原因是什么?谢谢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'))
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