2015-05-20 20 views
3

如何取消設置陣列後重新索引這個數組:我想就知道for循環建設陣列

echo "before deleting:<br>"; 
$countries[] = "Japan"; 
$countries[] = "Korea"; 
$countries[] = "china"; 

echo $a = count($countries); 
echo "<br>"; 

for($i= 0;$i < $a; $i++) 
{ 
    echo "$countries[$i]<br>"; 
} 

unset($countries[1]); 
echo "<br>";  

未設定功能後,計數顯示2,但第二 國名中國不迴應與下面的循環。

echo "<hr>After deleting:<br>"; 
echo $a = count($countries); 
echo "<br>"; 

//below is my forloop 
for($i=0;$i < $a; $i++) 
{ 
    echo "$countries[$i]<br>"; 
} 
</code> 
+1

我們這個問題在哪裏?下面的答案是否有助於你? (僅供參考:您可以接受最能幫助您的答案並解決您的問題(http://meta.stackexchange.com/q/5234)如果有這樣的答案,您也可以對所有其他問題執行此操作) – Rizier123

回答

2

使用array_values()重新索引:

$countries = array_values($countries); 

但是隻使用一個foreach()遍歷所有的值:

foreach($countries as $country) { 
    echo $country; 
} 
+0

捕捉!很高興看到我不脫軌:-) –

+0

今天你在哪一趟旅行:)?咖啡之旅? – Rizier123

+0

@ Rizier123:還不確定,今天的第一個答案,我沒有刪除。 – AbraCadaver

2

而不是

for($i=0;$i < $a; $i++) 
{ 
    echo "$countries[$i]<br>"; 
} 

使用

foreach ($countries as $country) { 
    echo $country . '<br>'; 
} 

foreach並不真正關心數組鍵,所以它會循環通過罰款。如果你真的想使用標準for循環,請在之前調用:$countries = array_values($countries);,這將有效地重置數組的鍵。

+0

謝謝你凱文! – JA21

+0

@ JA21非常受歡迎。我很少再使用標準的'for'循環...我發現'foreach'可以更容易,更快速地輸入:-) –

+0

另外,如果您需要知道當前數組的鍵是什麼,如果你喜歡你收到的答案之一,你可以像'foreach($國家爲$ key => $ country){...}' –