2017-09-27 22 views
-1

我正在將json對象數組解碼爲html列表。我嘗試過一些演示它的工作,但是當我處理這個json數組時,會給出錯誤:爲foreach()提供的無效參數。我錯過了什麼?無效的參數爲foreach()爲json對象數組提供的錯誤

<?php 
$json_string = '{"error":false,"data":[{"jb_product_category_id":"1","jb_product_category_name":"Mother","jb_product_category_prefix":"jbpm","jb_product_category_delete_status":"0","jb_product_category_created_on":"1501500876531","jb_product_category_updated_on":"1501500876531","subCategory1":[{"jb_product_subcategory1_1_id":"1","jb_product_subcategory1_2_category_id":"1","jb_product_subcategory1_3_name":"Cloths","jb_product_subcategory1_4_delete_status":"0","jb_product_subcategory1_5_created_on":"1501563015164","jb_product_subcategory1_6_updated_on":"1501563015164","subCategory2":[{"jb_product_subcategory2_1_id":"1","jb_product_subcategory2_2_category_id":"1","jb_product_subcategory2_3_subcategory1_id":"1","jb_product_subcategory2_4_name":"Pregnancy wear","jb_product_subcategory2_5_delete_status":"0","jb_product_subcategory2_6_created_on":"1501574226464","jb_product_subcategory2_7_updated_on":"1501574226464"}]}]},{"jb_product_category_id":"2","jb_product_category_name":"Child Wear","jb_product_category_prefix":"jbpc","jb_product_category_delete_status":"0","jb_product_category_created_on":"1502429483534","jb_product_category_updated_on":"1502429483534","subCategory1":[{"jb_product_subcategory1_1_id":"2","jb_product_subcategory1_2_category_id":"2","jb_product_subcategory1_3_name":"Girls","jb_product_subcategory1_4_delete_status":"0","jb_product_subcategory1_5_created_on":"1502429606169","jb_product_subcategory1_6_updated_on":"1502429606169","subCategory2":[{"jb_product_subcategory2_1_id":"2","jb_product_subcategory2_2_category_id":"2","jb_product_subcategory2_3_subcategory1_id":"2","jb_product_subcategory2_4_name":"Western","jb_product_subcategory2_5_delete_status":"0","jb_product_subcategory2_6_created_on":"1502429794573","jb_product_subcategory2_7_updated_on":"1502429794573"}]},{"jb_product_subcategory1_1_id":"3","jb_product_subcategory1_2_category_id":"2","jb_product_subcategory1_3_name":"Boys","jb_product_subcategory1_4_delete_status":"0","jb_product_subcategory1_5_created_on":"1505105190176","jb_product_subcategory1_6_updated_on":"1505105190176","subCategory2":[]}]}]}'; 

    $array = json_decode($json_string, true); 
    function build_list($array) { 
    $list = '<ul>'; 
    foreach($array as $key => $value) { 
    foreach($value as $key => $index) { 
    if(is_array($index)) { 
     $list .= build_list($index); 
     } else { 
     $list .= "<li>$index</li>"; 
     } 
    } 
    } 

     $list .= '</ul>'; 
    return $list; 
     } 

echo build_list($array); 
    ?> 
+1

$鍵使用兩次,你可以PLZ使用不同的變量名。同時檢查你是否在裝飾後獲得正確的陣列。只是爲了確認 –

+0

我讓此爲的foreach($數組作爲$密鑰=> $值){ \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t的foreach($值$鍵1 = > $ index){但沒有變化。 –

+0

不確定,但是您能否確認$ value也是一個數組,或者只是打印並檢查您是否使用了不是foreach變量的數組。 –

回答

1

簡單地只用一個的foreach,嵌套一個好像沒用:

foreach($array as $key => $index) { 
    if(is_array($index)) { 
    /* ... */ 
+0

布拉沃!有效 。我如何才能顯示具體的價值來列出我想要的?例如。媽媽,衣服? –

0

只需添加一個條件,以檢查是否$value是一個有效的數組或者不是。這樣,如果它不是數組,它將不會處理$value,並且警告將消失。

if (!is_array($value)) { 
     continue; 
    } 

使用內部foreach此條件下循環$array之前。

foreach($array as $key => $value) { 
    if (!is_array($value)) { 
     continue; 
    } 

    foreach($value as $k => $index) { 
    if(is_array($index)) { 
     $list .= build_list($index); 
     } else { 
     $list .= "<li>$index</li>"; 
     } 
    } 
} 

Ideone鏈接:Code

相關問題