Select din json_decode PHP


(Alex Mieila) #1

Salutare revin cu o noua problema.

$str = file_get_contents('http://ip/file.json/');
$json = json_decode($str, true);

La print arata ceva de genul.

Array
(
    [0] => Array
        (
            [endpoint] => 127.0.0.1
            [id] => 1
            [identifiers] => Array
                (
                    [0] => steam:x
                    [1] => license:x
                )

            [name] => Test User.
            [ping] => 80
        )

)

Intrebarea este:
Cum pot selecta doar numele pentru fiecare player de pe server, fara a fi nevoit sa caut cu tot cu ID-ul de pe server?
Exemplu:
echo $json['0']['name'];
in
echo $json['name'];

Fara a mai folosi ['0'].
Nu imi dau seama exact mai tarziu cum voi face foreach-ul sau while-ul pentru a selecta numele tuturor jucatorilor.

Multumesc!


(Andrei F.) #2

Cred ca array_column e ceea ce iti trebuie tie si il folosesti asa:

$str = file_get_contents('http://ip/file.json/');
$json = json_decode($str, true);
$playerNames = array_column($json, 'name'); 

(Alex Mieila) #3

Merge <3 Dar daca ar fi sa afisez doar numele lor?
Am incercat cu print_r

Array
(
    [0] => x
    [1] => x2
)

Adica cum as putea face un echo in acest array_column?

Multumesc mult!


(Eduard-Dan Stanescu) #4

De ce nu lucrezi direct cu obiecte, si transformi json_decode in array ?


(Alex Mieila) #5

Este prima data cand lucrez cu JSON si dupa ce am facut putin research doar la asta am putut ajunge.


(Andrei F.) #6

daca vrei doar sa afisezi numele poti face foreach direct pe array-ul din json_decode, nu mai ai nevoie de array_column.

$str = file_get_contents('http://ip/file.json/');
$json = json_decode($str, true);
foreach($json as $item) { echo $item['name']; }

(Eduard-Dan Stanescu) #7

Trimite-mi si mie json-ul.


(Alex Mieila) #8

Done. Am sa incerc acum si varianta lui @andreif
Multumesc pentru raspunsuri.