Ottieni valori da each object JSON di una chiave specifica

Nel mio unico progetto ho richiesto di estrarre each phone dall'input json. Input JSON qualcosa come:

 [ { "name": "Niyo", "email": "[email protected]", "phone": "8989457845" }, { "name": "Picks", "email": "[email protected]", "phone": "7878121245" }, { "name": "Chintz", "email": "[email protected]", "phone": "8745421254" }, { "name": "Kabiru Wabyu", "email": "[email protected]", "phone": "" }, { "name": "Rons", "email": "", "phone": "9898989898" } ] 

Conosco una soluzione per estrarre each telefono dal contact JSON di input

foreach($contacts as $phone){ $phones[]=$phone->phone; }

C'è un modo alternativo in php / laravel per get tutti i valori dal json di input per una chiave specifica?

Questo dovrebbe restituire quello che stai cercando, a condizione che tu abbia php 5.5 o più recente. Non sono sicuro se sia necessario impostare il secondo parametro di json_decode su TRUE, che restituisce una matrix di matrici, piuttosto che una matrix di oggetti.

 $x = json_decode(yourjson, TRUE); $phones = arrays_column($x, 'phone'); 

Dato che hai già questo come arrays, puoi usare arrays_map

 $phones = arrays_map(function($contact) { return $contact->phone; }, $contacts); 

Puoi usare le funzioni di aiuto di Laravel:

 $phones = arrays_pluck($contacts, 'phone'); 

o una collezione:

 $contacts = collect($contacts); $phones = $contacts->pluck('phone'); 

e non dimenticare di analizzare il JSON come arrays:

 $contacts = json_decode($json, true);