2017-09-27 134 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

相关问题