2011-03-21 140 views
0

我有一些問題有效地訪問某些數組數據,並需要一些提示。訪問多維數組

我做一個數據庫調用返回類似這樣的數據:

+------+------------+------------+-----------+ 
| id | key  | part_num | value | 
+------+------------+------------+-----------+ 
| 1 | application| p1   |   1| 
| 2 | application| p1   |   2| 
| 3 | capsule | p1   |   3| 
| 3 | capsule | p1   |   4| 
| 4 | instrument | p1   |   5| 
| 5 | instrument | p1   |   6| 
| 5 | instrument | p1   |   7| 
| 1 | application| n8   |   1| 
| 2 | application| n8   |   2| 
| 3 | capsule | n8   |   3| 
| 3 | capsule | n8   |   4| 
| 4 | instrument | n8   |   5| 
+------+------------+------------+-----------+ 

注意PART_NUM

我真的只需要PART_NUM和值超出這個(這我得到),但我想用零件號在PHP中對它進行分組。

例如一些甚至打印此簡單:

Part: (p1) 
Values: 1, 2, 3, 4, 5, 6, 7. 
Part: (n) 
Values: 1, 2, 3, 4, 5. 

請注意:,因爲我用這個數據,其他的事情,我不能與MySQL做到這一點,我不想正在做多個數據庫請求。

我希望我已經說得夠清楚了,讓我知道是否需要更多信息。

回答

1

假設您目前的數據是可變$data可以遍歷行和創建新陣列$partnums

$partnums = array(); 

foreach($data as $row) { 
    if (!isset($partnums[$row['part_num']])) 
     $partnums[$row['part_num']] = array(); 
    $partnums[$row['part_num']][] = $row['value']; 
} 

現在$partnums是具有PART_NUM對數組中的鍵......每一個引用與PART_NUM相關值的數組。

要打印出的價值觀像你建議:

foreach($partnums as $partnum => $values) { 
    printf('Part: (%s)'.PHP_EOL, $partnum); 
    printf('Values: %s.'.PHP_EOL, implode(', ', $values)); 
} 
+0

喜雅,該感謝。我有點跟隨你說的,但我的陣列還不是很正確,它看起來像 'Array([p1] => 7 [n8] => 5') 對不起, m不知道現在如何迭代每個單獨的值 – dangermark 2011-03-21 05:08:58

+0

啊!你只是編輯這個?我沒有看到最後一節:) – dangermark 2011-03-21 05:09:54

+0

我相信你在編輯之前可能已經看過RDL的以前的解決方案。 – Jacob 2011-03-21 05:11:22

0

您將使用循環遍歷數據。事情是這樣的:

$results = [your query and fetch] 

$array = array(); 
foreach ($results as $rs) 
    $array[$rs['part_num']][] = $rs['value'];