php json_decode仅通过唯一循环

时间:2014-01-29 08:24:31

标签: php json

我将这个json格式的数据作为字符串发送到我的php代码:

  $json_str = {{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"John" , "lastName":"Doe" }
}   

这是循环:

$emp = $_POST["emp"]; //this is the json str
$emp_arr = json_decode($emp);
foreach($emp_arr as $item) { //foreach element in $arr 
       $fname= $item->firstName; //etc 
       $lname= $item->lastName; //etc 
      //saving to DB line
    }

使用以下命令将其转换为php数组后:json_decode($ json_str)我遍历它并将这些值写入DB。 问题是,它只写了一次“John Doe”。有什么东西可以阻止这种循环中的重复值,或者我应该以不同的方式解码它? 我在DB中需要两次这个值。

谢谢。

2 个答案:

答案 0 :(得分:0)

请检查您的json对象。此代码有效:

  $json_str = '[
{"firstName":"John" , "lastName":"Doe" } , 
{"firstName":"Anna" , "lastName":"Smith" } , 
{"firstName":"John" , "lastName":"Doe" }
] ';


$emp_arr = json_decode($json_str);
foreach($emp_arr as $item) { //foreach element in $arr 
     echo   $fname= $item->firstName; //etc 
   echo    $lname= $item->lastName; //etc 
      //saving to DB line
    }

请参阅demo

答案 1 :(得分:0)

您的json无效。

尝试使用此json字符串。

    <?php
$json_str = '[{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"John" , "lastName":"Doe" }]';   

$array = json_decode($json_str, true);
echo "<pre>";
print_r($array);
echo "</pre>";

 for($i=0;$i<count($array);$i++)
 {
   $name=$array[$i]['firstName']." ".$array[$i]['lastName'];
   $sql="INSERT INTO yourTable (nameField) VALUES ('$name')";
   //DB Query
 }
?>

您可以循环浏览$array以插入数据。

解决方案首先由用户@Roopendra建议。后来他删除了答案。