foreach Zugriff auf den Index oder eine assoziative Array
Frage
Ich habe den folgenden Code-Schnipsel.
$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?
Lösung
Ihr $ Index-Variable gibt Art irreführend. Diese Zahl ist nicht der Index, Ihr "A", "B", "C", "D" Tasten sind. Sie können immer noch die Daten über den nummerierten Index $ index Zugriff [1], 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]; }
Andere Tipps
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";
}
habe ich das nicht früher getan, aber in der Theorie sollte es funktionieren.
Seien Sie vorsichtig, wie Sie Ihre Schlüssel sind zu definieren dort. Während Ihr Beispiel funktioniert, ist es 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
// )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow