【问题标题】:How to iterate through empty array or object如何遍历空数组或对象
【发布时间】:2020-05-20 12:07:43
【问题描述】:

我有一个对象或数组,如下所示: "[{},{},{},{},{},{},{},{},{\"subject\":\"Math\"},{},{},{},{ },{},{},{},{},{},{},{},{},{},{},{},{},{},{\“主题\”:\”化学\”},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}] "

还有: [{},{},{},{},{},{},{},{},{"subject":"Math"},{},{},{},{},{}, {},{},{},{},{},{},{},{},{},{},{},{},{"subject":"Chemistry"},{},{ },{},{},{},{},{},{},{},{},{},{},{},{},{}]

当我使用 foreach 循环对其进行迭代时,它会显示“在第 11 行的 C:\wamp64\www\eschool\cms\admin\scripts\time-table-add-submit.php 中为 foreach() 提供的参数无效” 可能是由于开头和结尾处的空值。但我想以某种方式迭代它如何做到这一点。这是我的代码: JavaScript:

var timeTableSub = [
       {"subject": timeTableSub1},
       {"subject": timeTableSub2},
       ... Like Wise....
       {"subject": timeTableSub42}
];
var jsonArray = JSON.stringify(timeTableSub);

$.ajax({
        url: "scripts/time-table-add-submit.php",
        type: "POST",
        dataType: 'html',
        data:{
            'arrayList': jsonArray
        },
        success: function (data) {
            data = $.trim(data);
            $("#tempDiv").html(data);
        }
    });

PHP:

<?php
$arrayList = json_encode($_POST['arrayList'], TRUE);

echo $arrayList."<br>";
$newArray = json_decode($arrayList);
echo $newArray."<br>";




foreach ($newArray as $key => $value)
{
      echo $key . " => " . $value . "<br>";
}

?>

【问题讨论】:

  • 那么编码和解码数据的意义何在?
  • 只是检查我拥有的数据,没有别的。
  • 您不需要$arrayList = json_encode($_POST['arrayList'], TRUE);,因为您从浏览器发送的已经 JSON。因此,您应该稍后再写$newArray = json_decode($_POST['arrayList']);
  • thanx @ADyson 现在我得到了结果,但空值丢失了。有没有办法打印像“主题:”如果它是空的

标签: javascript php arrays json


【解决方案1】:

您似乎对数据进行了两次字符串化,一次是在使用 JSON.stringify 的请求期间在前端,另一次是在通过再次编码接收 POST 对象时。

删除其中任何一个都可以解决此问题。

【讨论】:

  • 跟随 php 也不起作用。 $value) { echo $key . “=>”。 $价值。 "
    "; } ?>
  • 能否请您将代码发送给我以正确处理。谢谢
  • 好吧,想象一下将您的对象编码或字符串化为将数据打包在一个盒子中。您通过两次字符串化/编码所做的是将数据打包到 2 个框中,但只解包一次(使用您的 json_decode)。当我说要删除 JSON.stringifyjson_encode 时,您删除了 json_encode(包装)和 json_decode(拆包)。这意味着您从从 2 个盒子(还剩下 1 个盒子)拆包一次到从 1 个盒子(还剩下 1 个盒子)拆包一次,即相同的问题。重新添加您的 json_decode 即可解决此问题。
  • 我明白你的建议。例如我这样做: hello=encode1=encode2=decode2 并且数据仍然是 ecoded1 的形式。
  • 现在我会做正确的事,得到我想要的。
猜你喜欢
  • 1970-01-01
  • 2022-11-17
  • 2017-01-11
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
相关资源
最近更新 更多