Tom: in array suchen

Beitrag lesen

Hello,

Wie kann ich in einem Array nach einem value suchen und das jeweilige Array ausgeben?
Ich bin auf den Code gekommen, aber das muss performanter gehn....

[code lang=php]$search = 5; // Robert
$persons = array();
$persons['0']['id'] = 5;

$persons['0']['name'] = "Robert";
...
$persons['0']['id'] = 2;
$persons['0']['name'] = "Roland";
...
$persons['0']['id'] = 6;
$persons['0']['name'] = "Johannes";

Wenn sich die Struktur unter Berücksichtigung der Schlüsselkorrektur *g* auf diese Art hier beschränkt, dann würde ich sie anders herum aufbauen:

$_persons = array();
$_persons['id']   = array();
$_persons['name'] = array();
$_persons['age']  = array();

$_persons['id'][0]   = 5;
$_persons['name'][0] = "Robert";
$_persons['age'][0] = 20;

$_persons['id'][1] = 2;
$_persons['name'][1] = "Roland";
$_persons['age'][1] = 25;

$_persons['id'][2] = 6;
$_persons['name'][2] = "Johannes";
$_persons['age'][2] = 19;

Das hat den Vorteil, dass Du jedes Teilarray (id, nam, age) sortieren kannst.

Für den Zugriff auf die Daten, das Hinzufügen und Löschen benötigst Du dann zwar eine kleine Funktion, aber die ist jeweils sehr einfach und außerdem wiederverwendbar definierbar. Da habe ich im Archiv schon genügend Beispiele hinterlassen ;-)

Die Performanz für den Gesamtzugriff ist durch diesen andersartigen Aufbau nicht merklich anders.
Die Sortierbarkeit, die Bildung von Summen, Mittelwerten, Durchschnitten, Finden von Maximun, Minimum usw. der einzelnen "Spalten" ist aber dafür mit den vorhandenen Arrayfunktionen von PHP machbar, und das ist gegenüber einer User-Callbackfunction erheblich performanter.

Da Elemente in PHP-Arrays ohnehin alle diskret angelegt werden, Subarrays also nicht als geschlossene Strukturen, sondern als Einzelelemente angelegt werden, erwarte ich aich auch hier keinen messbaren wesentlichen Performanceunterschied.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de