2014-01-11 10 views
0

Я вижуPHP: Недействительный аргумент для Еогеаспа()

Warning: Invalid argument supplied for foreach()

Heres строку: foreach ($jobs_by_category as $category_name => $job_items) и вот остальная часть моего кода.

function display_job_list() 
{  
    global $db; 
    global $jobs_by_category; 
    global $category_name; 
    global $job_items; 
    global $item; 

    foreach ($jobs_by_category as $category_name => $job_items) 
    { 
     // display job category 
     output_div ('job_category', $category_name); 
     // print_r($category_name); 
     // browse through job items 
     foreach ($job_items as $item) 
     { 
      // output the 3 fields of this item 
      output_div ('job_qty'  , $item['item_quantity' ]); 
      output_div ('job_unit'  , $item['item_unit'  ]); 
      output_div ('job_description', $item['line_description']); 
     } 
    } 
} 
+0

Что вы получаете, если вы делаете var_dump ($ jobs_by_category) перед блоком foreach? – grim

+0

Вы проверили значение '' $ jobs_by_category''? Вы должны подтвердить, что его массив использует что-то вроде '' is_array ($ jobs_by_category) '' – ub3rst4r

+0

Гипотетически это также может быть объект, вы можете использовать is_object ($ jobs_by_category) в дополнение к is_array ($ jobs_by_category), как указано @ ub3rst4r. – grim

ответ

0

Упс, позволяет попробовать это снова

<?php 
    function display_job_list() 
    { 

     global $db; 
     global $jobs_by_category; 
     global $category_name; 
     global $job_items; 
     global $item; 

     foreach ($jobs_by_category as $category_name => $job_items){ 
    // display job category 
     output_div ('job_category', $category_name); 
    //print_r($category_name); 
    // browse through job items 
     if(!empty($job_items)){ 
      foreach ($job_items as $item) 
      { 
    // output the 3 fields of this item 
       output_div ('job_qty'  , $item['item_quantity' ]); 
       output_div ('job_unit'  , $item['item_unit'  ]); 
       output_div ('job_description', $item['line_description']); 
      } 
     } 
     else{ 
      continue; 
     } 

    } 
} 
?> 
+0

Как вы знаете,' '$ job_items'' является проблемой? Он ссылается на проблему с итерацией '' $ jobs_by_category'' – ub3rst4r

+0

См. Я бы подумал об этом, но потом я подумал об этом на секунду, и если первый цикл не сработал, тогда он не написал бы второй цикл. Я уверен, что есть пустое значение где-то в этом ar ray/object – Sparatan117

+0

@ Sparatan117 Я думаю, что проблема в том, что я не подключаюсь к другим функциям, на которые эта функция опирается. Я использовал глобальное $ category_name; ect, но, похоже, это не соединение. – user3135712

0
$jobs_by_category = array(); 
some_code; 
some_other_code; 

function display_job_list() 
{ 

    : 
    global $jobs_by_category; 
    : 
    if count($jobs_by_category > 0) { 
     foreach ($jobs_by_category as $category_name => $job_items) 
     { 
      // processing code 
      : 
     } 
    } 
    else { 
     print_a_message('No records to process'); 
    } 
} 
1

Вы должны убедиться, переменная массива перед Еогеасп.

function display_job_list() 
{ 

    global $db; 
    global $jobs_by_category; 
    global $category_name; 
    global $job_items; 
    global $item; 

    if (is_array($jobs_by_category)){ 
     foreach ($jobs_by_category as $category_name => $job_items) 
     { 
      // display job category 
      output_div ('job_category', $category_name); 
      //print_r($category_name); 
      // browse through job items 
      if (is_array($job_items)){ 
       foreach ($job_items as $item) 
       { 
        // output the 3 fields of this item 
        output_div ('job_qty'  , $item['item_quantity']); 
        output_div ('job_unit'  , $item['item_unit']); 
        output_div ('job_description', $item['line_description']); 
       } 
      } 
     } 
    } 

} 
?> 
Смежные вопросы