2013-03-08 4 views
0

У меня есть массив, и я пытаюсь перебрать его с Еогеасп, но я получаюPHP многомерные Еогеаспа цикл

Недействительный аргумент для Еогеаспа() на внутреннем цикле.

Я не уверен, что у меня неверный. Я попытался с помощью $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; 
    } 
+0

Вы Foreach ключ значение массива. Это не сработает. Foreach значение ($ m) –

+0

Я получаю тот же результат с $ m –

+0

@KeithPower: проверить мой ответ Я объяснил это. –

ответ

2
  1. Во внутреннем Еогеасп вы зацикливание $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; 
       } 
     } 
+1

Мне нравится, как вы скопировали его ужасный отступ – TFennis

+0

Я использую cakephp, поэтому он устанавливает ["company_id"] => string (3), если это строка, я могу получить все значения? –

+0

Да .. проверьте мой ответ ... 'else' условие' is_array' –

1

изменить это

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

в

foreach ($m as $empl) // $m is your array value 
+0

Я получаю тот же результат, я боюсь –

+0

@ KeithPower проверить ответ прашанта. –

0

Ваш массив не будет работать над этим кодом. Он ожидает multidementional массив, но это не совсем Существует значение строки на первой глубине

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" 
     } 
    } 

Он пытается проходное строковое значение, которое генерируется ошибка

Смежные вопросы