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);