2 Stimmen

PHP-Funktion, um den nächsten Wert der Schleife zu kennen?

Nehmen wir an, ich habe diese foreach-Schleife:

foreach ($lists as $list) {
    if (next list item == "test") {
         echo "the next $list item equals 'test'";
    }
}

Ich hoffe, du verstehst, was ich mit dem Code bezwecken will.

Danke,

2voto

alex Punkte 457905

Sie können verwenden next() .

Denken Sie daran, dass dies den internen Zeiger vorwärts bewegt, so dass Sie ihn zurückspulen können, indem Sie prev() .

In dem folgenden Beispiel habe ich jedoch current() die den aktuellen Zeiger eines Arrays ermittelt. foreach() scheint es einmal im Körper des Konstrukts zu erhöhen.

Konforce hat diese Idee ursprünglich gehabt.

Das letzte Leerzeichen ist NULL was gut ist (es gibt kein nächstes Mitglied). :)

$lists = range('a', 'f');

foreach($lists as &$value) {
   $next = current($lists);
   echo 'value: ' . $value . "\n" . 'next: ' . $next . "\n\n";
}

unset($next, $value);

Ausgabe

value: a
next: b

value: b
next: c

value: c
next: d

value: d
next: e

value: e
next: f

value: f
next: 

CodePad .

2voto

Matthew Punkte 46409

Bei einem indexbasierten Array ist das ganz einfach. Verwenden Sie eine for Schleife oder die Verwendung von $i => $val in einer Schleife.

Für andere Arrays können Sie etwa so vorgehen:

$current = current($lists);
while ($current !== false)
{
        $next = next($lists);

        echo "$current => $next\n";

        $current = $next;
}

obwohl es nicht funktioniert, wenn Ihr Array den literalen Wert false enthält. Sie müssen auch reset um erneut eine Schleife zu durchlaufen.

1voto

delphist Punkte 4387

Sie können das aktuelle/nächste Element emulieren:

<?php
    $lists = range('a', 'f');

    foreach ($lists as $next) {
        if($list !== NULL) {
            if ($next == "test") {
                echo "the next $next item equals 'test'";
            }

            echo 'current: ' . $list . ', next: ' . $next . "\n";
        }
        $list = $next;
    }
?>

Sortie :

current: a, next: b
current: b, next: c
current: c, next: d
current: d, next: e
current: e, next: f

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X