2014-01-11 2 views
0

나는 Heres는 라인 PHP는 경고 : foreach 문에 대한 공급 잘못된 인수()

Warning: Invalid argument supplied for foreach()

를 참조하십시오 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

foreach 블록 전에 var_dump ($ jobs_by_category)를 수행하면 어떻게됩니까? – grim

+0

''$ jobs_by_category''의 값을 확인 했습니까? ''is_array ($ jobs_by_category)'' – ub3rst4r

+0

과 같은 것을 사용하여 배열을 검증해야합니다. 객체 일 수도 있지만 @ ub3rst4r에서 언급 한 is_array ($ jobs_by_category) 외에도 is_object ($ jobs_by_category)를 사용할 수 있습니다. – 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 문제는이 함수가 의존하는 다른 함수에 연결하지 않는다고 생각합니다. 나는 global $ category_name을 사용했다; 요법이지만 연결하는 것 같지 않습니다. – 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

당신은 변수가 foreach는 전에 배열 확인해야 시도 할 수 있습니다.

관련 문제