it-swarm.com.ru

PHP считать JSON массив

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

{
"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».

7
AndroidDev

Попробуйте echo count($task_array['task']);

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

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

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

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

Пример: 3

Из Тайваня

2
coltphp

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

пытаться 

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

Правка :

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

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

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

вот мой файл 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
1
Karthick