在PHP

2011-12-08 12 views
3

創建從循環關聯多維數組我怎樣才能創建像從數據庫結果集的使用循環在PHP以下的數組:在PHP

Array 
(
    [T] => Array 
     (
      [0] => Array 
       (
        [id] => 1 
        [name] => Timer 
       ) 

      [1] => Array 
       (
        [id] => 2 
        [name] => Tub 
       ) 

     ) 

    [P] => Array 
     (
      [0] => Array 
       (
        [id] => 3 
        [name] => Paper 
       ) 

      [1] => Array 
       (
        [id] => 4 
        [name] => Puppy 
       ) 

     ) 

) 

你會發現,在數組鍵是一個字母,它取自結果集中的'name'值。循環將是這樣的:

while($result = $db->fetch($query) { 

    $key = $result['name']{0}; 

    // your answer :-) 

} 

回答

4

我覺得這樣的事情應該這樣做:

$sql = 'SELECT id, name FROM table'; 
$result = mysql_query($sql); 
$answer = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $answer[ strtoupper($row['name'][0]) ][] = $row; 
} 
mysql_free_result($result); 
var_dump($answer); 

OR,更具體的(如果你的查詢不僅僅是idname返回多列):

while($row = mysql_fetch_assoc($result)) 
{ 
    $answer[ strtoupper($row['name'][0]) ][] = array(
     'id' => $row['id'], 
     'name' => $row['name'] 
    ); 
} 
+0

啊,太好了,謝謝!發生這種情況的部分是額外的[] >> $ array [$ key] [] = $ result;而不是$ array [$ key] = $ result ;.沒有這一點,當我們循環時,以前會被覆蓋。 – Billy

+0

@比利正確! ':)'如果我的帖子解決了你的問題,你能否考慮將它標記爲已接受?謝謝! – nickb

+1

謝謝尼克....期待如何我可以標記你的答案....? – Billy

0
$indexArray = array(); // Array from Example 
while($result = $db->fetch($query) { 
    $key = $result['name']{0}; 
    if(!isset($indexArray[$key])) { 
     $indexArray[$key] = array(); 
    } 
    array_push($indexArray[$key], $result); 
} 
0
$results = array(); 
while($result = $db->fetch($query)) { 
    $key = strtoupper($result['name'][0]); 
    if(!isset($results[$key])) 
    $results[$key] = array(); 
    $results[$key][] = $result; 
}