2008-09-16 6 views
3

Ich habe das folgende Code-Snippet.foreach Zugriff auf den Index oder ein assoziatives Array

$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++; 
} 

Erwartete Ausgabe:

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

Gibt es eine Möglichkeit, die $index Variable auszulassen?

Antwort

11

Ihre $ index Variable dort ist irgendwie irreführend. Diese Nummer ist nicht der Index, Ihre "A", "B", "C", "D" Tasten sind. Sie können weiterhin auf die Daten über den nummerierten Index $ index [1] zugreifen, aber das ist wirklich nicht der Punkt. Wenn Sie wirklich die nummerierte Index behalten wollen, hatte restrukturieren ich fast die Daten:

 
$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

Eigentlich ist es der Index, die A, B, C und D sind Array-Schlüssel. –

+0

Aber Sie haben Recht mit der Datenstruktur, Ihr Beispiel ist fast genau das, womit ich endete. :) –

5

Sie können dies tun:

$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"; 
} 

Ich habe das vorher nicht getan, aber in der Theorie sollte es Arbeit.

+0

Dies sollte als Antwort akzeptiert werden. Arbeitsbeispiel: http://sandbox.onlinephpfunctions.com/code/84b7bc658e0c18ebebd809083b9fce3af5ea084c – Justinas

+0

Beachten Sie, dass 'each' in PHP 7.2 veraltet ist. http://php.net/manual/en/function.each.php – brismuth

1

Seien Sie vorsichtig, wie Sie Ihre Schlüssel dort definieren. Während Ihr Beispiel funktioniert, ist es möglicherweise nicht immer:

$myArr = array(); 
$myArr[A] = "a"; // "A" is assumed. 
echo $myArr['A']; // "a" - this is expected. 

define ('A', 'aye'); 

$myArr2 = array(); 
$myArr2[A] = "a"; // A is a constant 

echo $myArr['A']; // error, no key. 
print_r($myArr); 

// Array 
// (
//  [aye] => a 
//) 
+0

Danke für Ihre Korrektur, ich habe die Frage aktualisiert. –

Verwandte Themen