2012-08-16 31 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

相關問題