2008-09-16 15 views
3

私は次のコードスニペットを持っています。foreachはインデックスまたは連想配列にアクセスします

$items['A'] = "Test"; 
$items['B'] = "Test"; 
$items['C'] = "Test"; 
$items['D'] = "Test"; 

$index = 0; 
foreach($items as $key => $value) 
{ 
    echo "$index is a $key containing $value\n"; 
    $index++; 
} 

予想される出力:

0 is a A containing Test 
1 is a B containing Test 
2 is a C containing Test 
3 is a D containing Test 

$index変数を除外する方法はありますか?

答えて

11

$ index変数に誤解を招くようなものがあります。その数字はインデックスではなく、あなたの "A"、 "B"、 "C"、 "D"のキーです。番号付きインデックス$ index [1]を使ってデータにアクセスすることはできますが、それは本当にポイントではありません。あなたは本当に、番号のインデックスを維持したい場合は、私はほとんどのデータを再構築したい:

 
$items[] = array("A", "Test"); 
$items[] = array("B", "Test"); 
$items[] = array("C", "Test"); 
$items[] = array("D", "Test"); 

foreach($items as $key => $value) { 
    echo $key.' is a '.$value[0].' containing '.$value[1]; 
} 
+0

実際はインデックスで、A、B、C、Dは配列キーです。 –

+0

しかし、あなたはデータの再構成について正しいです、あなたの例はほぼ私が最後に終わったものです。 :) –

5

あなたがこれを行うことができます:私はその前に行っていないが、理論的にはそれが必要

$items[A] = "Test"; 
$items[B] = "Test"; 
$items[C] = "Test"; 
$items[D] = "Test"; 

for($i=0;$i<count($items);$i++) 
{ 
    list($key,$value) = each($items[$i]); 
    echo "$i $key contains $value"; 
} 

を作業。

+0

これは受け入れられるべきである答え。実際の使用例:http://sandbox.onlinephpfunctions.com/code/84b7bc658e0c18ebebd809083b9fce3af5ea084c – Justinas

+0

'each'はPHP 7.2では非推奨です。 http://php.net/manual/en/function.each.php – brismuth

1

ここでキーをどのように定義しているかに注意してください。実際の例では、必ずしもそうではありません。

+0

あなたの修正のおかげで、私は質問を更新しました。 –

関連する問題