2012-08-16 30 views
0

这是查询我使用:如何创建一个查询来获得使用where子句作为结果数组索引的结果?

$idList="32,33,21,11";   
$query = "SELECT post_id, meta_value FROM wp_posts 
      WHERE meta_key = 'grade' AND post_id IN ($idList)"; 

其结果是,在where子句变成键:

$result = array(
       0 => array('post_id'=> 32, 'meta_value'=>5), 
       1 => array('post_id'=> 33, 'meta_value'=>2), 
       2 => array('post_id'=> 21, 'meta_value'=>8), 
      ) 

我希望有这样的结果:

$result = array(
       0 => array(32 => 5), 
       1 => array(33 => 2), 
       2 => array(21 => 8), 
      ) 

如何为了达成这个?谢谢!

回答

1

遍历结果集是这样的:

$_final = array(); // new result set 

foreach ($result as $value) 
    $_final[] = array($value['post_id'] => $value['meta_value']); 

unset($result); // free memory from old result set 

UPDATE:如果有太多的元素,你怕内存消耗,你可以做到这一点通过以下方式:

$_final = array(); // new result set 

foreach ($result as $key => $value) { 
    $_final[] = array($value['post_id'] => $value['meta_value']); // composing new data 
    unset($result[$key]); // unsetting already parsed value 
} 

unset($result); // freeing memory from old result set 
+0

谢谢!我虽然使用foreach进行格式化,但担心数量不断增加会导致速度变慢。似乎这是唯一的方法。 – Jenny 2012-08-16 16:22:31

+0

@Jenny,不客气。我已经更新了我的答案,您可以查看优化的变体。 – 2012-08-16 16:26:12

+0

完美!感谢您展示科技!我也会在其他几个类似的情况下执行此操作。 – Jenny 2012-08-16 22:51:49

相关问题