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".
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.
$task_array = json_decode($json_tasks);
count($task_array->task);
EX: 3
Du Taïwan
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();
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