Antworten:
foreach($array as $key=>$value) {
// do stuff
}
$key
ist der Index jedes $array
Elements
$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 das for
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
$index = 0;
foreach($data as $key=>$val) {
// Use $key as an index, or...
// ... manage the index this way..
echo "Index is $index\n";
$index++;
}
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 und next()
der Zeiger des Arrays auf das nächste Element verschoben.
$key
from $key=>$value
) ... Ich wette jedoch, dass die geringere Leistung in einer einfachen Schleife nicht signifikant / wahrnehmbar ist.
Sie können $i
außerhalb der Schleife erstellen und $i++
am unteren Rand der Schleife ausführen.
Diese beiden Schleifen sind gleichwertig (abgesehen von den Sicherheitsgeländern natürlich):
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
z.B
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
Ich denke, die beste Option ist dieselbe:
foreach ($lists as $key=>$value) {
echo $key+1;
}
es ist einfach und normal
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
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
Ihre Ausgabe wird sein
2
5
In diesem Fall hat jedes Element im Array einen erkennbaren Index, aber wenn Sie dann etwas wie das Folgende tun
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
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.
$var[] = 10;
(siehe PHP-Link zur Anleitung), sodass die zweite for
Schleife die erwarteten Ergebnisse ausgibt.
Normalerweise mache ich das, wenn ich mit assoziativen Arrays arbeite:
foreach ($assoc_array as $key => $value) {
//do something
}
Dies funktioniert auch mit nicht assoziativen Arrays. $ key ist der Indexwert. Wenn Sie es vorziehen, können Sie dies auch tun:
foreach ($array as $indx => $value) {
//do something
}
Ich möchte dies hinzufügen, ich habe dies in Laravel verwendet, um nur meine Tabelle zu indizieren:
Mein Code:
@foreach($resultsPerCountry->first()->studies as $result)
<tr>
<td>{{ ++$loop->index}}</td>
</tr>
@endforeach
$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:
$array = array('a', 'b', 'c');
foreach ($array as $letter=>$index) {
echo $letter; //Here $letter content is the actual index
echo $array[$letter]; // echoes the array value
}//foreach
foreach(array_keys($array) as $key) {
// do stuff
}