2013-10-26 4 views
5

Я искал SO, но не мог найти скрипт answer.My PHP является получение некоторые JSON по HTTP POST, который выглядит следующим образом:PHP граф 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' .

ответ

11

Попробуйте 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.

+0

К сожалению моя ошибка, один более promblem когда Theres только одна задача, а не 3, он говорит, что есть 6 задач – AndroidDev

+0

Вы интерпретирующие структуры данных неправильно. Вы попробовали мой намек на 'var_export'? – Oswald

2

Хлынутся 3 детали в 1 пункта "task" так, вы один массив с именем задачи и 3 элементы в нем

попробовать

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

EDIT:

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

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

Извините, моя ошибка, еще одна проблема, когда у вас только 1 задача, а не 3, она говорит, что есть 6 задач – AndroidDev

+0

@ Coder101, пожалуйста, проверьте редактирование –

+1

@ Coder101, просто посмотрите на свой массив, есть один массив ** task ** в который содержит 3 массива, а затем в каждом из 3 массивов имеется 6 элементов –

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

EX: 3

из Тайваня

1

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

вот мое содержание 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 
Смежные вопросы