2013-08-29 54 views
0

我想讓我的頁面上顯示數組的所有鍵。PHP顯示數組鍵1個數字更高

現在我有這樣的:

$subjectcodes[1] = "Mathematics"; 
$subjectcodes[2] = "Physics"; 
$subjectcodes[3] = "Charlie"; 
$subjectcodes[4] = "Chemistry"; 
$subjectcodes[5] = "Biology"; 
$subjectcodes[6] = "English"; 
$subjectcodes[7] = "Dutch"; 
$subjectcodes[8] = "German"; 
$subjectcodes[9] = "Sociology"; 
$subjectcodes[10] = "Physical Education"; 
$subjectcodes[11] = "Art"; 
$subjectcodes[12] = "General Science"; 
$subjectcodes[13] = "Philosophy"; 
$subjectcodes[14] = "Management and Organization"; 
$subjectcodes[15] = "Research and Design"; 

foreach ($subjectcodes as &$value) { 
     $key = key($subjectcodes); 
     echo "<option value=" . $key . ">" . $value . "</option>"; 
} 

當我去我的頁面代碼,我得到:

<option value=2>Mathematics</option> 
<option value=3>Physics</option> 
<option value=4>Charlie</option> 
<option value=5>Chemistry</option> 
<option value=6>Biology</option> 
<option value=7>English</option> 
<option value=8>Dutch</option> 
<option value=9>German</option> 
<option value=10>Sociology</option> 
<option value=11>Physical Education</option> 
<option value=12>Art</option> 
<option value=13>General Science</option> 
<option value=14>Philosophy</option> 
<option value=15>Management and Organization</option> 
<option value=>Research and Design</option></select> 

正如你所看到的所有按鍵均高1號轉念一想。最後一個選項甚至沒有鑰匙...

有沒有人爲什麼這是,我怎麼能解決這個問題?

謝謝!

+0

這是寫一個foreach的奇怪方法! – Yousf

+0

@Yousf你能否說出原因? – Ahmed

+0

選擇foreach循環變量作爲參考,並從循環中獲取密鑰。標準的方式是@Niloy Shaa說。 'foreach($ my_array as $ key => $ value)' – Yousf

回答

7

嘗試:

foreach ($subjectcodes as $key=>$value) { 
    //$key = key($subjectcodes); 
    echo "<option value=" . $key . ">" . $value . "</option>"; 
} 
+0

是的,它的工作謝謝:) – Ahmed

+0

接受答案,如果它幫助你。 –

+0

我會,但我必須等待11分鐘 – Ahmed

1

陣列上的foreach迭代,這意味着,當您使用的主要手段的「當前」數組元素在您的foreach循環下。你的代碼沒有很好地構建你正試圖實現的目標。

使用這個代替:

foreach ($subjectcodes as $key => $value) { 
    echo "<option value=" . $key . ">" . $value . "</option>"; 
} 

注意:除非你想改變的foreach循環內的數組元素的值就沒有必要使用& $值。

3

您可以使用foreach()鍵和值,所以更改:

foreach ($subjectcodes as &$value) { 
    $key = key($subjectcodes); 
    echo "<option value=" . $key . ">" . $value . "</option>"; 
} 

foreach ($subjectcodes as $key => $value) { 
    echo "<option value=" . $key . ">" . $value . "</option>"; 
} 
1

的注意事項,完成有關使用引用作爲foreach循環變量的信息:

http://php.net/manual/en/control-structures.foreach.php

即使在foreach循環中使用了 ,$ value和最後一個數組元素的引用仍然保留。建議通過unset()銷燬它。

所以,如果你決定使用一個引用作爲一個foreach變量,你已經在foreach之後取消設置。

foreach ($subjectcodes as &$value) 
{ 
} 
unset($value)