Raketenwilli: mehrdimensionales Array durchsuchen

Beitrag lesen

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.