2014-06-29 59 views
0

我有以下的php文件,应该通过json数组循环并打印必要的信息。 “(!)解析错误:语法错误,意外的'foreach'(T_FOREACH)在C:\ wamp \ www \ bootstrap-dist \ jsonpost中。第15行的php“。有人可以帮我解决这个问题吗?无法解析json数组php

<?php 
$jArray ='{ "books":[{"id":"01", 
         "language": "Java", 
         "edition": "third", 
         "author": "Herbert Schildt" 
         }, 
         { 
         "id":"07", 
         "language": "C++", 
         "edition": "second" 
         "author": "E.Balagurusamy" 
         }] 
        }' 

    foreach ($jArray as $obj) { // error in this line 
       $ProductName = $obj['edition']; 
       $ProductQuantity= $obj['language']; 
       echo $ProductName+" "+$ProductQuantity; 
      } 

?> 
+0

请使用[JSONLint](http://jsonlint.com/)来验证您的json字符串。 – James

回答

3

首先,语法错误是因为您忘记了JSON变量之后的分号。

... 
     "E.Balagurusamy" 
    }] 
}'; // <-- there 

并解析它;使用json_decode

$parsed = json_decode($jArray, true); 
foreach ($parsed['books'] as $obj) { 
    // ... 

编辑:新增, truejson_decode,而且,你的JSON有语法错误。

"edition": "second", /* NOTE THE COMMA HERE */ 
"author": "E.Balagurusamy" 

编辑2:+连接字符串导致0。使用.

echo $ProductName." ".$ProductQuantity; 
+0

对不起,意思是'json_decode'并且是固定的。 – Pietu1998

+0

即使那么我得到这个“警告:无效的参数提供的foreach()在C:\ wamp \ www \ bootstrap-dist \ jsonpost.php在17行”错误 – user3393926

+0

一秒钟,检查。 – Pietu1998