web-dev-qa-db-de.com

PHP zählen Sie ein JSON-Array

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'.

7
AndroidDev

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.

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

EX: 3

Aus Taiwan

2
coltphp

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();
2
Deepanshu Goyal

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
1
Karthick