Ist es möglich, den foreach
Index zu finden ?
in einer for
Schleife wie folgt:
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
gibt Ihnen den Index.
Muss ich die for
Schleife verwenden oder gibt es eine Möglichkeit, den Index in die foreach
Schleife zu bekommen ?
$myarr['foo'] = 'bar';
vatiable++;
jeder Iteration zu erhöhen . Der traditionelle Weg, hat aber immer funktioniert.Sie können einen Hack in Ihr
foreach
Feld einfügen, z. B. ein Feld, das bei jedem Durchlauf inkrementiert wird. Genau dasfor
gibt Ihnen die Schleife in einem numerisch indizierten Array. Ein solches Feld wäre ein Pseudoindex, der manuell verwaltet werden muss (Inkremente usw.).A
foreach
gibt Ihnen Ihren Index in Form Ihres$key
Wertes, so dass ein solcher Hack nicht notwendig sein sollte.zB in a
foreach
quelle
Es ist zu beachten, dass Sie
key()
jedes Array aufrufen können, um den aktuellen Schlüssel zu finden. Wie Sie sich vorstellen können,current()
wird der aktuelle Wert zurückgegeben undnext()
der Zeiger des Arrays auf das nächste Element verschoben.quelle
$key
from$key=>$value
) ... Ich wette jedoch, dass die geringere Leistung in einer einfachen Schleife nicht signifikant / wahrnehmbar ist.Owen hat eine gute Antwort. Wenn Sie nur den Schlüssel möchten und mit einem Array arbeiten, kann dies ebenfalls nützlich sein.
quelle
foreach(array_keys($array) as $index=>$key)
.Sie können
$i
außerhalb der Schleife erstellen und$i++
am unteren Rand der Schleife ausführen.quelle
Diese beiden Schleifen sind gleichwertig (abgesehen von den Sicherheitsgeländern natürlich):
z.B
quelle
Ich denke, die beste Option ist dieselbe:
es ist einfach und normal
quelle
Jonathan ist richtig. PHP-Arrays fungieren als Zuordnungstabelle für Zuordnungstasten zu Werten. In einigen Fällen können Sie einen Index erhalten, wenn Ihr Array definiert ist, z
Ihre Ausgabe wird sein
In diesem Fall hat jedes Element im Array einen erkennbaren Index, aber wenn Sie dann etwas wie das Folgende tun
Sie erhalten keine Ausgabe. Dies liegt daran, dass Arrays in PHP keine linearen Strukturen sind, wie sie in den meisten Sprachen vorkommen. Sie ähneln eher Hash-Tabellen, die möglicherweise Schlüssel für alle gespeicherten Werte enthalten oder nicht. Daher verwendet foreach keine Indizes, um über sie zu crawlen, da sie nur dann einen Index haben, wenn das Array definiert ist. Wenn Sie einen Index benötigen, stellen Sie sicher, dass Ihre Arrays vollständig definiert sind, bevor Sie über sie kriechen, und verwenden Sie eine for-Schleife.
quelle
$var[] = 10;
(siehe PHP-Link zur Anleitung), sodass die zweitefor
Schleife die erwarteten Ergebnisse ausgibt.PHP-Arrays haben interne Zeiger. Versuchen Sie Folgendes:
Funktioniert für mich in Ordnung (allerdings nur sehr vorläufig getestet).
quelle
Normalerweise mache ich das, wenn ich mit assoziativen Arrays arbeite:
Dies funktioniert auch mit nicht assoziativen Arrays. $ key ist der Indexwert. Wenn Sie es vorziehen, können Sie dies auch tun:
quelle
Ich möchte dies hinzufügen, ich habe dies in Laravel verwendet, um nur meine Tabelle zu indizieren:
Mein Code:
quelle
$loop
Variable kann nicht verwendet werden, da sie nach allgemeinem PHP gefragt wird.Ich habe diesen Weg gelöst, als ich den foreach-Index und den Wert im selben Kontext verwenden musste:
quelle
quelle