[英]How to get Array index in foreach
我在php中有一個foreach循環來迭代一個關聯數組。 在循環內,而不是增加一個變量我想得到當前元素的數字索引。 可能嗎。
$arr = array('name'=>'My name','creditcard'=>'234343435355','ssn'=>1450);
foreach($arr as $person){
// want index here
}
我通常這樣做得到索引:
$arr = array('name'=>'My name','creditcard'=>'234343435355','ssn'=>1450);
$counter =0;
foreach($arr as $person){
// do a stuff
$counter++;
}
使用此語法來foreach
訪問密鑰(作為$index
)和值(作為$person
)
foreach ($arr as $index => $person) {
echo "$index = $person";
}
這在PHP foreach
文檔中有解釋。
為什么在關聯數組中需要數字索引? 關聯數組將任意值映射到任意值,例如在您的示例中,字符串到字符串和數字:
$assoc = [
'name'=>'My name',
'creditcard'=>'234343435355',
'ssn'=>1450
];
數字數組將連續數字映射到任意值。 在您的示例中,如果我們刪除所有字符串鍵,編號將如下所示:
$numb = [
0=>'My name',
1=>'234343435355',
2=>1450
];
在PHP中,您不必在這種情況下指定鍵,它自己生成鍵。 現在,要獲取foreach
語句中的鍵,您可以使用以下表單,如@MichaelBerkowski已經向您顯示:
foreach ($arr as $index => $value)
如果迭代編號數組, $index
將具有數字值。 如果遍歷關聯數組,它將具有您指定的鍵值。
說真的,為什么我甚至都在描述這一切?! 直接來自手冊的常識!
現在,如果你有一個帶有一些任意鍵的關聯數組,並且你必須知道值的編號位置並且你不關心鍵,你可以在數組上迭代array_values
結果:
foreach (array_values($assoc) as $value) // etc
但是,如果你有關鍵的護理,你必須使用額外的櫃台,就像你自己圖所示:
$counter = 0;
foreach ($assoc as $key => $value)
{
// do stuff with $key and $value
++$counter;
}
或者使用array_reduce
一些搞砸功能風格的東西,沒關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.