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();
попробуйте этот код, здесь я могу подсчитать количество объектов с определенным значением
вот мои данные.содержимое файла 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