2011-11-01 27 views
5

私は連想配列を反復するためにPHPでforeachループを持っています。ループ内で、変数をインクリメントする代わりに、現在の要素の数値インデックスを取得したいと思います。出来ますか。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++; 
    } 
+0

連想配列の数値インデックスはどのような用途に使用されますか? – Sonny

答えて

18

$personとして)($indexなど)のキーと値にアクセスするためのforeachするために使用するこの構文を

foreach ($arr as $index => $person) { 
    echo "$index = $person"; 
} 

この説明されているin the PHP foreach documentation.

2

なぜあなたは数値のインデックスが必要でしょうかアソシエートアレイですか?

$assoc = [ 
    'name'=>'My name', 
    'creditcard'=>'234343435355', 
    'ssn'=>1450 
]; 

数値配列の任意の値に連続番号をマップ:あなたの例では、文字列と数値の文字列は次のように連想配列は、任意の値に任意の値をマッピングします。我々はすべての文字列のキーを削除した場合、あなたの例では、番号は次のようになります:あなたは、この場合のキーを指定する必要はありませんPHPで

$numb = [ 
    0=>'My name', 
    1=>'234343435355', 
    2=>1450 
]; 

、それは彼ら自身を生成します。

foreach ($arr as $index => $value) 

あなたは以上の番号の配列を反復処理した場合、$indexは、数値を持つことになります:@MichaelBerkowskiはすでにあなたを示すよう は今、foreach文でキーを取得するには、あなたは、次の形式を使用します。 assoc配列を反復処理すると、指定したキーの値が返されます。

真剣に、私はなぜそれもすべて記述しているのですか?それはマニュアルからまっすぐな知識です!

:あなたには、いくつかの任意のキーを持つ 連想配列を持っていて、値の番号の位置を知っている必要がありますし、あなたが鍵を気にしない場合

さて、あなたはあなたのアレイ上array_valuesの結果を反復処理することができます

foreach (array_values($assoc) as $value) // etc 

しかし、あなたがキーについてケアを行う場合は、自分自身を示すように、あなたは、追加のカウンタを使用する必要があります。

$counter = 0; 
foreach ($assoc as $key => $value) 
{ 
    // do stuff with $key and $value 
    ++$counter; 
} 

または一部screweファンクションスタイルのものはarray_reduceで問題ありません。

+0

あなたは@hijarianに感謝します。 5年前に尋ねられたように。今はPHP –

+0

@MarthaJames bwahahaに関する本を書いています。 :) – hijarian

関連する問題