web-dev-qa-db-fra.com

PHP compter le tableau JSON

J'ai cherché SO mais je n'ai pas trouvé de réponse. Mon script PHP reçoit du JSON par http post qui ressemble à ceci:

{
"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"
  }
 ]}

Comme vous pouvez le voir, il y a 3 éléments, mais lorsque je le transforme en un objet tableau PHP et que je compte les éléments, je suis renvoyé 1, alors qu'il devrait être 3, voici mon PHP code:

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

Et echo count affiche "1" et non "3".

7
AndroidDev

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

En général, si vous vous demandez quelle est la structure de la valeur d'une variable $var, faites un 

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

L'avantage de cette fonction par rapport aux alternatives telles que serialize et print_r est qu'elle affiche le code PHP (et est donc lisible par quiconque comprend PHP (ce qui est probable si vous programmez en PHP)). L’inconvénient de var_export est qu’il ne peut pas gérer les structures circulaires (par exemple, si $a->b == $a), mais JSON non plus.

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

EX: 3

Du Taïwan

2
coltphp

Eh bien, les éléments 3 sont dans 1 item "task" donc vous avez un tableau nommé tâche et les 3 éléments sont dans celui-ci

essayer 

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

MODIFIER :

veuillez utiliser le code ci-dessous pour imprimer le tableau avec le motif correct

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

essayez ce code, ici je peux compter le nombre d'objets ayant une valeur spécifique

voici le contenu de mon fichier 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"}
]}

voici le code 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;
?>

la sortie sera 

2
1
Karthick