Ich habe SO gesucht, aber keine Antwort gefunden.Mein PHP-Skript erhält JSON-Post von http post, die wie folgt aussieht:
{
"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"
}
]}
Wie Sie sehen, gibt es 3 Elemente, aber wenn ich es in ein PHP Array-Objekt verwandle und die Elemente zähle, wird 1 zurückgegeben, wenn es 3 sein sollte, hier ist mein PHP code:
$json_tasks = $_POST["json_array"];
$task_array = json_decode($json_tasks,true);
echo count($task_array);
Und echo count
gibt '1' aus, nicht '3'.
echo count($task_array['task']);
ausprobieren
Wenn Sie sich fragen, wie der Wert einer Variablen $var
aufgebaut ist, führen Sie im Allgemeinen einen aus
<pre><?php var_export($var, true); ?></pre>
Vorteil dieser Funktion gegenüber Alternativen wie serialize
und print_r
ist, dass sie PHP-Code druckt (und somit von jedem gelesen werden kann, der PHP versteht (was wahrscheinlich ist, wenn Sie in PHP programmieren). ). Nachteil von var_export
ist, dass es keine kreisförmigen Strukturen verarbeiten kann (z. B. wenn $a->b == $a
), JSON jedoch nicht.
$task_array = json_decode($json_tasks);
count($task_array->task);
EX: 3
Aus Taiwan
Nun, die 3
-Elemente befinden sich in 1
-Element "task"
. Sie haben also ein Array namens task und die 3 Elemente sind darin
versuchen
echo count($task_array['task']);
BEARBEITEN:
bitte verwenden Sie den untenstehenden Code, um das Array im richtigen Muster zu drucken
echo '<pre>';
print_r($task_array['task']);
exit();
versuchen Sie diesen Code, hier kann ich die Anzahl der Objekte mit einem bestimmten Wert zählen
hier ist der Inhalt meiner data.json-Datei
{"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"}
]}
hier ist der PHP-Code
<?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;
?>
ausgabe wird sein
2