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?

War es hilfreich?

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
scroll top