2009-04-01 8 views
1

zu formatieren Was das schnellste (beste Ergebnis erzielt) Art und Weise in PHP ist ein (My) SQL Ergebnis wie zu transformieren:schnellster Weg, um SQL Ergebnisse in PHP

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 der 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 tut, ohne die zusätzliche Inflexibilität und Leistungseinbußen von vollem ORM?

Dank

Antwort

2

Try this:

$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); 
+0

Ahh, du hast mich dazu geschlagen. –

+0

Das würde Dubletten nicht herausfiltern. Natürlich sollte die Abfrage das tun, aber ich würde immer überprüfen. (Und möglicherweise eine Warnung auf Duplikate protokollieren) – epochwolf

-1

ezSQL bei http://www.woyano.com/jv/ezsql sollte das tun, was Sie wollen. Ich habe ein Projekt übernommen, das es verwendet und es sieht ziemlich gut zusammen. Ich selbst bevorzuge es, etwas näher am Metal zu sein, aber wenn du abstrahieren möchtest, erscheint es meiner Erfahrung nach ziemlich solide.