0

我有一个数组,我试图用 foreach 循环它,但我得到了

为内部循环上的 foreach() 提供的参数无效。

我不确定我有什么不正确的。我试过使用$key

这是数组:

array(3) { ["company_id"]=> string(3) "159" 
    [0]=> array(9) { 
        ["company_id"]=> string(3) "159" 
        ["employee_id"]=> string(3) "544" 
        ["pay_week1"]=> string(1) "0" } 
    [1]=> array(9) { 
        ["company_id"]=> string(3) "159" 
        ["employee_id"]=> string(3) "545"  } } 

我的循环:

foreach ($this->request->data['MonthlyReturn'] as $key=>$m) // Cycle through each record

{
    foreach ($key as $empl)

    {
        $employee = $empl['employee_id'];
        print '<pre>';
        print_r ($employee);
        exit;
    }
4

3 回答 3

2
  1. 在内部 foreach 中,您正在循环$key将其更改为$m

  2. 此外,您的数组的第一个值不是数组,即["company_id"]=> string(3) "159"是一个字符串(159),所以它会给出错误。所以在内部 foreach 之前也检查数组if(is_array($m)){

这是代码:

         foreach ($this->request->data['MonthlyReturn'] as $key=>$m){
              if(is_array($m)){
                  echo $m['employee_id'];
              }
              else{
                   echo $m;
              }
         } 
于 2013-03-08T10:00:57.963 回答
1

改变这个

foreach ($key as $empl)  // $key is array key

foreach ($m as $empl)   // $m is your array value
于 2013-03-08T10:00:36.370 回答
0

您的数组不适用于该代码。它需要一个多维数组,但它不完全在第一个深度上有一个字符串值

array(3) {
        ["company_id"]=> string(3) "159" <--- problem
        [0]=> array(9) { 
            ["company_id"]=> string(3) "159" 
            ["employee_id"]=> string(3) "544" 
            ["pay_week1"]=> string(1) "0" 
        } 
        [1]=> array(9) { 
            ["company_id"]=> string(3) "159" 
            ["employee_id"]=> string(3) "545"  
        } 
    } 

它试图循环一个字符串值,这会产生一个错误

于 2013-03-08T10:10:59.247 回答