题
是否有可能找到的 foreach
指数?
在一个 for
循环如下:
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
会给你指数。
我必须要用的 for
环或是否有某种方式获得的索引 foreach
循环?
解决方案
foreach($array as $key=>$value) {
// do stuff
}
$ key
是每个 $ array
元素的索引
其他提示
你可以在 foreach
中加入一个hack,例如每次运行时增加的字段,这正是 for
循环在数字上给你的 - 索引数组。这样的字段将是一个需要手动管理的伪索引(增量等)。
foreach
会以 $ key
的形式为您提供索引,因此不需要这样的黑客攻击。
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++;
}
请注意,您可以致电 key()任何数组上的代码>
以查找其当前密钥。您可以猜测 current()
将返回当前值, next()
会将数组的指针移动到下一个元素。
foreach(array_keys($array) as $key) {
// do stuff
}
您可以在循环外创建 $ i
,并在循环的底部执行 $ i ++
。
这两个循环是等效的(当然是安全栏):
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
例如
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
PHP数组有内部指针,所以试试这个:
foreach($array as $key => $value){
$index = current($array);
}
对我来说没问题(虽然只是经过初步测试)。
乔纳森是对的。 PHP数组充当将键映射到值的映射表。在某些情况下,如果定义了数组,则可以获取索引,例如
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
您的输出将是
2
5
在这种情况下,数组中的每个元素都有一个可知的索引,但是如果你那么做了类似下面的事情
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
你没有输出。这是因为PHP中的数组不像大多数语言中那样是线性结构。它们更像是哈希表,可能有也可能没有所有存储值的键。因此foreach不使用索引来爬过它们,因为如果定义了数组,它们只有索引。如果需要索引,请确保在对数组进行爬网之前完全定义数组,并使用for循环。
我认为最好的选择是一样的:
foreach ($lists as $key=>$value) {
echo $key+1;
}
很容易,通常
我通常在使用关联数组时执行此操作:
foreach ($assoc_array as $key => $value) {
//do something
}
这也适用于非关联数组。 $ key将是索引值。如果您愿意,也可以这样做:
foreach ($array as $indx => $value) {
//do something
}
我想添加此,我用这在laravel只是指我表:
- 美元的环>索引
- 我还前置与++$循环,以开始在1
我的代码:
@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";
}