1

什么是 PHP 中转换(My)SQL 结果的最快(最佳性能)方法,例如:

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')
);

进入更容易使用:

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')
 )
);

或者是否有一个库已经这样做了,而没有增加完整 ORM 的不灵活性和性能损失?

谢谢

4

2 回答 2

2

试试这个:

$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);
于 2009-04-01T18:39:40.750 回答
-1

http://www.woyano.com/jv/ezsql上的 ezSQL应该做你想做的事。我已经接管了一个使用它的项目,它看起来非常好。我自己我更喜欢更接近金属,但如果你想抽象出来,那么在我的经验中它看起来很可靠。

于 2009-04-01T18:41:22.680 回答