2014-01-29 66 views
0

我試圖用foreach提取二維數組的值。 我有這樣的陣列,例如:與二維數組的foreach

$ud['prc']['col1'] 
$ud['prc']['col2'] 
.... 

我的循環:

foreach ($ud['arc'] as $name => $rank) { 
    if ($name != 'user_ID') { 
     echo "<tr><td>{$name}</td><td>{$rank}</td></tr>"; 
    } 
} 

此代碼爲某種原因印刷第一表行與(所述陣列的數量名稱爲「0」($ud['prc']['0'])而不是它的真名 'col1')

而不是打印我:

<tr><td>col1</td><td>value of col1</td></tr> 
<tr><td>col2</td><td>value of col2</td></tr> 
<tr><td>col3</td><td>value of col3</td></tr> 

它打印此:

<tr><td>0</td><td>value of col1</td></tr> 
<tr><td>col1</td><td>value of col1</td></tr> 
<tr><td>1</td><td>value of col1</td></tr> 
<tr><td>col2</td><td>value of col2</td></tr> 
<tr><td>2</td><td>value of col1</td></tr> 
<tr><td>col3</td><td>value of col3</td></tr> 

我真的希望我解釋自己不夠好,如果沒有意見,請告訴我你不明白,所以我可以把它給你解釋。

我結合使用這個與MySQL

這裏是我的MySQL代碼:

$ud['arc']數組包含此:

$arc_q= mysql_query("SELECT * FROM arc WHERE user_ID='$id'"); 
$arc = mysql_fetch_array($arc_q); 
$ud['arc'] = $arc; 
+0

這個數組是SQL命令的結果嗎? –

+0

你的數組是否填滿了一種查詢結果? –

+0

顯示數組的值。也改變你的foreach循環'$ ud ['arc']'到'$ ud ['prc']' – user2936213

回答

0

正如其陣列來自查詢你有兩種選擇:

1 - 添加MYSQL_ASSOC參數「mysql_fetch_array」功能

2 - 驗證,關鍵是整數,並跳過

我個人更喜歡第一個不需要創建更多的代碼

+0

Thx!它工作完美! – OfirH

1

$ud數組不是關聯數組,所以它通過數字(0..n)和字符串索引,不僅通過字符串('prc'等等)。所以你的結果數組有雙重值。

如果陣列從一個SQL查詢生成的,那麼你應該使用:

$ud = mysqli_fetch_assoc(),而不是mysqli_fetch_array()

+0

Thx!它工作完美! – OfirH

0

更改

$arc = mysql_fetch_array($arc_q); 

$arc = mysql_fetch_assoc($arc_q); 

希望它幫助。

+0

謝謝!它的工作非常完美! 你能解釋我有什麼不同嗎? – OfirH

+0

@ user3209297函數mysql_fetch_assoc,它做幾乎相同的事情,除了它只帶來字段名而不是索引。這與在mysql_fetch_array中添加參數MYSQL_ASSOC相同。 –

+0

明白了。再次感謝你! – OfirH