2013-10-26 9 views
5

ich SO gesucht, konnte aber nicht eine answer.My PHP-Skript finden, ist eine JSON von http Post erhalten, die wie folgt aussieht:PHP Zählung JSON-Array

{ 
"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 können, gibt es 3 Artikel , aber wenn ich es in ein PHP-Array-Objekt und zählen sie die Elemente drehen, ich bin 1, zurückgegeben werden, 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 druckt ‚1‘ nicht ' 3'.

Antwort

11

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

Im Allgemeinen, wenn Sie sich fragen, was die Struktur des Wertes einer Variablen $var wird, machen einen

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

Vorteil dieser Funktion über Alternativen wie serialize und print_r ist, dass es PHP-Code ausgibt (und somit von jedem gelesen werden kann, der PHP versteht) (was wahrscheinlich ist, wenn Sie in PHP programmieren)). Der Nachteil von var_export ist, dass es nicht umgehen kann kreisförmigen Strukturen (z. B. wenn $a->b == $a), aber auch nicht JSON.

+0

Leider mein Fehler, noch eine promblem sein, wenn Theres nur 1 Aufgabe, nicht mehr als 3, es sagt, es gibt sechs Aufgaben – AndroidDev

+0

Sie die Datenstruktur falsch interpretieren. Hast du meinen Tipp über 'var_export' versucht? – Oswald

2

Nun, die 3 Artikel sind in 1 Artikel "task" so, Sie haben ein Array mit dem Namen Aufgabe und die drei Elemente sind darin

versuchen

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

EDIT:

benutzen Sie bitte Der folgende Code, um das Array im richtigen Muster zu drucken

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

Sorry mein Fehler, ein weiteres Problem, wenn Theres nur 1 Aufgabe, nicht 3, es sagt, es gibt 6 Aufgaben – AndroidDev

+0

@ Coder101 überprüfen Sie bitte die Bearbeitung –

+1

@ Coder101 Nun schauen Sie sich Ihr Array, gibt es ein Array ** Aufgabe ** in was gibt es 3 Arrays und dann in jedem von dort 3 Arrays gibt es 6 Elemente –

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

EX: 3

Von Taiwan

1

diesen Code versuchen, hier kann ich in der Lage, die Anzahl von Objekten mit bestimmtem Wert zu zählen

hier ist mein data.json Dateiinhalt

{"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; 
?> 

Ausgang

2