Der schnellste Weg SQL Ergebnisse in PHP zu formatieren
Frage
Was ist die schnellste (bestes Ergebnis erzielt) Art und Weise in PHP ist ein (My) SQL Ergebnis wie zu transformieren:
array(
array('user_name' => 'john', 'tag_id' => 1, 'tag_name' => 'foo'),
array('user_name' => 'john', 'tag_id' => 2, 'tag_name' => 'bar'),
array('user_name' => 'rick', 'tag_id' => 3, 'tag_name' => 'foobar'),
array('user_name' => 'rick', 'tag_id' => 2, 'tag_name' => 'bar')
);
In die einfacher zu bedienen:
array(
array('name' => 'john', 'tags' => array(
array('id' => 1, 'name' => 'foo'),
array('id' => 2, 'name' => 'bar')
),
array('name' => 'rick', 'tags' => array(
array('id' => 3, 'name' => 'foobar'),
array('id' => 2, 'name' => 'bar')
)
);
Oder gibt es eine Bibliothek, die dies bereits der Fall ist, ohne die zusätzlichen Inflexibilität und Leistungseinbußen von Voll ORM?
Danke
Lösung
Versuchen Sie folgendes:
$data = array(
array('user_name' => 'john', 'tag_id' => 1, 'tag_name' => 'foo'),
array('user_name' => 'john', 'tag_id' => 2, 'tag_name' => 'bar'),
array('user_name' => 'rick', 'tag_id' => 3, 'tag_name' => 'foobar'),
array('user_name' => 'rick', 'tag_id' => 2, 'tag_name' => 'bar')
);
$final = array();
foreach ($data as $item) {
if (!isset($final[$item['user_name']])) {
$final[$item['user_name']] = array(
'name' => $item['user_name'],
'tags' => array()
);
}
$final[$item['user_name']]['tags'][] = array(
'id' => $item['tag_id'],
'name' => $item['tag_name']
);
}
$final = array_values($final);
Andere Tipps
ezSQL unter http://www.woyano.com/jv/ezsql tun sollten was Sie wollen. Ich habe über ein Projekt übernommen, die es verwendet und es ganz gut zusammen erscheinen. Ich selbst lieber etwas näher an das Metall sein, aber wenn man abstrahieren hinwünschen dann scheint es ziemlich solide in meiner Erfahrung.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow