Frage

Ist es möglich, den foreach Index zu finden?

in einer for Schleife wie folgt:

for ($i = 0; $i < 10; ++$i) {
   echo $i . ' ';
}

$i geben Sie den Index.

Muss ich die for Schleife verwenden, oder gibt es eine Möglichkeit, den Index in der foreach Schleife zu bekommen?

War es hilfreich?

Lösung

foreach($array as $key=>$value) {
    // do stuff
}

$key ist der Index jedes $array Element

Andere Tipps

Sie können einen Hack in Ihrem foreach setzen, wie ein Feld auf jedem Durchlauf erhöht, was genau das ist, was die for Schleifen Ihnen in einem numerisch indiziertes Array gibt. Ein solches Feld ein pseudo-Index sein würde, die manuelle Verwaltung benötigt (in Schritten, etc).

Ein foreach geben Sie Ihren Index in der Form Ihres $key Wert, so ein solcher Hack sollte nicht notwendig sein.

z. B. in einem 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() auf jedem Array aufrufen finden die den aktuellen Schlüssel auf. Wie Sie current() wird wieder den aktuellen Wert erraten und next() wird die Array-Zeiger auf das nächste Element bewegen.

Owen hat eine gute Antwort. Wenn Sie nur den Schlüssel wollen, und Sie arbeiten mit einem Array diese auch nützlich sein könnten.

foreach(array_keys($array) as $key) {
//  do stuff
}

Sie können $i außerhalb der Schleife erstellen und $i++ am unteren Rand der Schleife tun.

Diese beiden Schleifen gleichwertig sind (die Sicherheitsgeländer natürlich bar):

for ($i=0; $i<count($things); $i++) { ... }

foreach ($things as $i=>$thing) { ... }

zB

for ($i=0; $i<count($things); $i++) {
    echo "Thing ".$i." is ".$things[$i];
}

foreach ($things as $i=>$thing) {
    echo "Thing ".$i." is ".$thing;
}

PHP Arrays haben interne Zeiger, so versuchen Sie dies:

foreach($array as $key => $value){
   $index = current($array);
}

Werke in Ordnung für mich (nur sehr vorläufig obwohl getestet).

Jonathan ist richtig. PHP Arrays fungieren als eine Kartentabelle Kartierschlüssel auf Werte. in einigen Fällen können Sie einen Index, wenn Ihr Array erhalten wird definiert, wie

$var = array(2,5);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

Ihr Ausgang wird

2
5

wobei jedes Element in dem Array ein erkennbares Index hat, aber wenn man dann etwas tun, wie folgt aus

$var = array_push($var,10);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

Sie erhalten keine Ausgabe. Dies geschieht, weil Arrays in PHP sind nicht lineare Strukturen, wie sie in den meisten Sprachen sind. Sie sind eher wie Hash-Tabellen, die keine Schlüssel für alle gespeicherten Werte haben oder nicht. Daher foreach verwendet Indizes nicht über sie zu kriechen, weil sie nur einen Index hat, wenn das Array definiert ist. Wenn Sie einen Index haben müssen, stellen Sie sicher, dass Ihre Arrays vollständig definiert werden, bevor über sie kriechen, und eine Verwendung für Schleife.

Ich denke, die beste Wahl, wie gleich ist:

foreach ($lists as $key=>$value) {
    echo $key+1;
}

es ist einfach und in der Regel

ich tun dies normalerweise, wenn sie mit assoziativen Arrays arbeiten:

foreach ($assoc_array as $key => $value) {
 //do something
}

Dies wird auch mit nicht-assoziativer Arrays funktionieren. $ Key wird der Indexwert sein. Wenn Sie möchten, können Sie dies auch:

foreach ($array as $indx => $value) {
  //do something
}

Das möchte ich hinzufügen, habe ich dies in Laravel nur Index meine Tabelle:

  • Mit Loop- $> Index
  • I Vorinkrement es auch mit ++ $ Schleife bei 1
  • zu starten

Mein Code:

@foreach($resultsPerCountry->first()->studies as $result)
  <tr>
    <td>{{ ++$loop->index}}</td>                                    
  </tr>
@endforeach
foreach(array_keys($array) as $key) {
//  do stuff
}
foreach($arrvariable as $key=>$value){
echo "$key";
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top