循环遍历 : PHP 中的数组


looping through an array in : PHP

My JSON Array:

['"{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx5,78.xxxxxx3'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":1,'''"reciever'''":'''"+91xxxxxx'''",'''"timpestamp'''":'''"3'''"}'",'"{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx,78.xxxxx'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":2,'''"reciever'''":'''"+91xxxxx'''",'''"timpestamp'''":'''"3'''"}'"]

我正在将此 JSONArray 作为添加参数中的 POST 请求的一部分传递。

我用于显示数组内容的代码

$jsonData = stripslashes($_POST['add']);
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record) 
{
 echo $record["caller"];
}

我的输出只是两个开放的大括号。

{

{

我无法理解出了什么问题

您的 JSON 无效,每个数组周围不应有引号。

修复

生成它的内容,如果不能,下面将修复

$jsonData = stripslashes(stripslashes($jsonData));
$jsonData = str_replace(
  array('"{', '}"'),
  array('{', '}'),
  $jsonData
);
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record) 
{
   echo $record["caller"];
}

虽然作为最后的手段使用,但在发送之前修复损坏的 JSON 是最佳选择。 魔术引号也从 PHP 中删除。 避免使用它

以上输出

+91xxxx

+91xxxxx

你的 json 刺痛有问题。试试这个:

$post = '[{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx5,78.xxxxxx3'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":1,'''"reciever'''":'''"+91xxxxxx'''",'''"timpestamp'''":'''"3'''"},{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx,78.xxxxx'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":2,'''"reciever'''":'''"+91xxxxx'''",'''"timpestamp'''":'''"3'''"}]';
$jsonData = stripslashes(stripslashes($post));
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record) 
{
echo $record["caller"];
}