einfacher wäre es, wenn Du das Array gleich richtig™ aufbauen würdest:
Dann muss ich doch weiter ausholen. Ich habe solch ein JSON
[ { "id": "NCC-1031", "name": "Discovery" }, { "id": "NCC-1227", "name": "Shenzhou" }, { "id": "NCC-1701", "name": "Enterprise" } ]
und generiere daraus das Array:
$json = file_get_contents('starships.json'); $starships = json_decode($json, TRUE);
Das Array ist so wie es ist.
Soso. „Beharrungsvermögen“.
$StarshipsPerId = [];
foreach ( $starships as $item ) {
$StarshipsPerId[ $item['id'] ] = $item['name'];
}
unset ( $starships );
Wusch! (Bruchteil eines Bruchteils einer Millisekunde) Jetzt hast Du ein neues, direkt befragbares Array.
- Womöglich willst Du die Datei mit dem Json-String neu erzeugen:
file_put_contents(
'StarshipsPerId.json',
json_encode( $StarshipsPerId, JSON_PRETTY_PRINT )
);
Freilich könnte man den Json-String auch in seiner Existenzform „Text“ umformen :-). Das wird aber teuer.
- Auf mögliche Probleme (leere oder nicht eindeutige ID) sei hingewiesen.
- Wenn noch mehr Eigenschaften hinzukommen (Baujahr, Update, Länge, Breite, Höhe, vMax, Antriebsart, Besatzung, ... ) und danach gefragt werden können soll, nimm sqlite statt json als Datendaseinsform.