(Anfänger) JSON korrekt auslesen, wie?

Kenox

Grünschnabel
#1
Hallo Community,

ich habe mich gewagt, PHP auf eigene Pfoten zu lernen.
Klappt soweit sogar ganz gut, bisauf das JSON auslesen.
Ich möchte von "players", "maxplayers" & "online" so ausgeben
lassen: "0/128". - Jedoch klappt das nicht soganz. :/

(API: https://mcapi.de/api/server/31.172.80.114)
Code:
Code:
<?php

    $seite = file_get_contents("https://mcapi.de/api/server/31.172.80.114");
    $array = json_decode($seite, true);
    if($array['players'] == 0) {echo "0/128";}
    elseif($array['players'] > 0) {echo "0/128";}
    echo $array['players'];
?>
Bitte seid nicht so streng mit mir, ich bin ein Anfänger! :D
Danke im Vorraus!
Mit freundlichen grüßen,
Kenox
 

Yaslaw

n/a
Moderator
#2
Als erstes immer für sich selber den JSON formatieren, damit man die Verschachtelungen gut erkennt.
Code:
{
    "result":{
        "status":"Ok",
        "message":"No errors."
    },
    "hostname":"31.172.80.114",
    "players":{
        "max":250,
        "online":0
    },
    "updated":{
        "time":"2016-11-04 14:56:08",
        "expires":"2016-11-04 15:01:08",
        "zone":"Europe\/Berlin"
    }
}
Dann erkennt man, dass die Verschachtelung so aussieht
PHP:
$max = $array['players']['max'];
$online= $array['players']['online'];
Den Rest deiner Frage habe ich nicht verstanden.
 

Kenox

Grünschnabel
#3
Danke! Funktioniert jetzt.
Habe es so:
Code:
<?php

    $seite = file_get_contents("https://mcapi.de/api/server/151.80.33.142");
    $array = json_decode($seite, true);
    $max = $array['players']['max'];
    $online= $array['players']['online'];
    $players = $online.'/'.$max;
    echo $players
?>
 

Kenox

Grünschnabel
#4
@Yaslaw Ich habe doch wieder ein Problem:
aus https://mcapi.ca/query/mc.minseside.de/info möchte ich "status"
auslesen. Das habe ich bereits:
PHP:
<?php
    $seite = file_get_contents("https://mcapi.ca/query/mc.minseside.de/info");
    $array = json_decode($seite, true);
    $status= "\"".$array['status']."\"";
    echo $status;
?>
Jedoch wird mir kein "true" oder "false" angezeigt.
lediglich die zwei Anführungszeichen ("")

Danke im Vorraus!
 
#5
So sollte es klappen:
PHP:
<?php
    $seite = file_get_contents("https://mcapi.ca/query/mc.minseside.de/info");
    $array = json_decode($seite, true);
    if(!$array['status']){
      $status = "False";
    }else{
      $status = "True";
    }
    echo $status;
?>