Is het mogelijk om de foreach
index te vinden?
in een for
lus als volgt:
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
geeft je de index.
Moet ik de for
-lus gebruiken of is er een manier om de index in de foreach
-lus te krijgen?
Antwoord 1, autoriteit 100%
foreach($array as $key=>$value) {
// do stuff
}
$key
is de index van elk $array
element
Antwoord 2, autoriteit 18%
U kunt een hack in uw foreach
plaatsen, zoals een veld dat bij elke doorloop wordt verhoogd, en dat is precies wat de for
-lus u geeft in een numeriek- geïndexeerde reeks. Zo’n veld zou een pseudo-index zijn die handmatig moet worden beheerd (incrementen, enz.).
Een foreach
geeft je je index in de vorm van je $key
waarde, dus zo’n hack zou niet nodig moeten zijn.
bijv. in een 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++;
}
Antwoord 3, autoriteit 3%
Opgemerkt moet worden dat u key()
op een willekeurige array om de huidige sleutel te vinden. Zoals je kunt raden, zal current()
de huidige waarde retourneren en next()
zal de aanwijzer van de array naar het volgende element verplaatsen.
Antwoord 4, autoriteit 2%
Owen heeft een goed antwoord. Als je alleen de sleutel wilt, en je werkt met een array, kan dit ook handig zijn.
foreach(array_keys($array) as $key) {
// do stuff
}
Antwoord 5, autoriteit 2%
Je kunt $i
buiten de lus maken en $i++
onderaan de lus doen.
Antwoord 6
Deze twee lussen zijn equivalent (behalve de veiligheidsleuningen natuurlijk):
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
bijv.
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
Antwoord 7
Ik denk dat de beste optie hetzelfde is:
foreach ($lists as $key=>$value) {
echo $key+1;
}
het is gemakkelijk en normaal
Antwoord 8
PHP-arrays hebben interne pointers, dus probeer dit:
foreach($array as $key => $value){
$index = current($array);
}
Werkt goed voor mij (alleen zeer voorlopig getest).
Antwoord 9
Jonathan heeft gelijk. PHP-arrays fungeren als een toewijzingstabel die sleutels toewijst aan waarden. in sommige gevallen kunt u een index krijgen als uw array is gedefinieerd, zoals
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
je output zal zijn
2
5
in dat geval heeft elk element in de array een kenbare index, maar als je dan zoiets als het volgende doet
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
u krijgt geen uitvoer. Dit gebeurt omdat arrays in PHP geen lineaire structuren zijn zoals in de meeste talen. Ze lijken meer op hash-tabellen die al dan niet sleutels hebben voor alle opgeslagen waarden. Vandaar dat foreach geen indexen gebruikt om eroverheen te crawlen, omdat ze alleen een index hebben als de array is gedefinieerd. Als je een index nodig hebt, zorg er dan voor dat je arrays volledig zijn gedefinieerd voordat je eroverheen crawlt, en gebruik een for-lus.
Antwoord 10
Normaal gesproken doe ik dit als ik met associatieve arrays werk:
foreach ($assoc_array as $key => $value) {
//do something
}
Dit werkt ook prima met niet-associatieve arrays. $key is de indexwaarde. Als je wilt, kun je dit ook doen:
foreach ($array as $indx => $value) {
//do something
}
Antwoord 11
Ik heb het op deze manier opgelost, toen ik de foreach-index en waarde in dezelfde context moest gebruiken:
$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
Antwoord 12
Ik gebruik ++$key
in plaats van $key++
om vanaf 1 te beginnen. Normaal gesproken begint het vanaf 0.
@foreach ($quiz->questions as $key => $question)
<h2> Question: {{++$key}}</h2>
<p>{{$question->question}}</p>
@endforeach
Uitvoer:
Question: 1
......
Question:2
.....
.
.
.
Antwoord 13
foreach(array_keys($array) as $key) {
// do stuff
}
Antwoord 14
Ik zou dit willen toevoegen, ik heb dit in laravel gebruikt om mijn tabel te indexeren:
- Met $loop->index
- Ik verhoog het ook vooraf met ++$loop om te beginnen bij 1
Mijn code:
@foreach($resultsPerCountry->first()->studies as $result)
<tr>
<td>{{ ++$loop->index}}</td>
</tr>
@endforeach