PHP count JSON массив

Я искал так, но не мог найти ответа.Мой PHP-скрипт получает JSON по http post, который выглядит так:

{
"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 ответов


попробовать echo count($task_array['task']);

в общем, если вам интересно, что структура значения переменной $var is, do a

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

преимущество этой функции над альтернативами, такими как serialize и print_r заключается в том, что он печатает PHP-код (и, таким образом, читается любым, кто понимает PHP (что вероятно, если вы программируете на PHP)). Недостаток var_export является то, что он не может обрабатывать круговые структуры (например, если $a->b == $a), но и JSON не может.


и 3 элементы 1 элемент "task" Итак, у вас есть один массив с именем task и 3 элемента в нем

попробовать

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

EDIT:

пожалуйста, используйте приведенный ниже код для печати массива в правильном шаблоне

echo '<pre>';
print_r($task_array['task']);
exit();

$task_array = json_decode($json_tasks);
count($task_array->task);

EX: 3

От


попробуйте этот код, здесь я могу подсчитать количество объектов с определенным значением

вот мои данные.содержимое файла 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