簡體   English   中英

如何在foreach中獲取Array索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM