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 に答える