我将这个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中需要两次这个值。
谢谢。
答案 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建议。后来他删除了答案。