12

我已经搜索过,但找不到答案。我的 PHP 脚本正在通过 http 帖子接收一些 JSON,如下所示:

{
"task": [
{
  "task_id": "3",
  "task_due": "Oct 26 11:25",
  "task_completed": "FALSE",
  "task_desc": "fff",
  "task_time": "20131026_112531",
  "task_name": "fff"
},
{
  "task_id": "2",
  "task_due": "Oct 26 11:25",
  "task_completed": "FALSE",
  "task_desc": "rff",
  "task_time": "20131026_112522",
  "task_name": "xff"
},
{
  "task_id": "1",
  "task_due": "Oct 26 11:25",
  "task_completed": "FALSE",
  "task_desc": "fggg",
  "task_time": "20131026_112516",
  "task_name": "ff"
  }
 ]}

如您所见,有 3 个项目,但是当我将其转换为 PHP 数组对象并计算项目时,我返回 1,当它应该是 3 时,这是我的 PHP 代码:

$json_tasks = $_POST["json_array"];
$task_array = json_decode($json_tasks,true);
echo count($task_array);

echo count打印出“1”而不是“3”。

4

4 回答 4

17

尝试echo count($task_array['task']);

通常,如果您想知道变量值的结构是什么$var,请执行

<pre><?php var_export($var, true); ?></pre>

这个函数相对于替代方法的优势serialize在于print_r它打印 PHP 代码(因此任何了解 PHP 的人都可以阅读(如果你用 PHP 编程,这很可能))。缺点var_export是它不能处理循环结构(例如 if $a->b == $a),但 JSON 也不能。

于 2013-10-26T11:24:09.750 回答
5
$task_array = json_decode($json_tasks);
count($task_array->task);

例如:3

来自台湾

于 2015-10-12T08:00:26.420 回答
4

那么3项目在1项目中,"task"所以你有一个名为任务的数组,其中有 3 个元素

尝试

echo count($task_array['task']);

编辑 :

请使用以下代码以正确的模式打印数组

echo '<pre>';
print_r($task_array['task']);
exit();
于 2013-10-26T11:25:10.323 回答
2

试试这个代码,在这里我可以计算具有特定值的对象的数量

这是我的 data.json 文件内容

{"likes":[
    {"user_id":1,"time":"12:04pm"},
    {"user_id":2,"time":"02:04pm"},
    {"user_id":67,"time":"11:04pm"},
    {"user_id":1,"time":"12:04pm"}
]}

这是php代码

<?php
$jsonData = file_get_contents("data.json");
$data = json_decode($jsonData,true);
$total = 0;
foreach ($data["likes"] as $value) {
    if($value["user_id"]==1){
        $total = $total+1;
    }
}
echo $total;
?>

输出将是

2
于 2016-12-18T02:25:55.070 回答