首页 文章

如何找到foreach索引

提问于
浏览
374

是否有可能找到 foreach 索引?

for 循环中如下:

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

$i 会给你索引 .

我是否必须使用 for 循环或者是否有某种方法来获取 foreach 循环中的索引?

12 回答

  • 8

    PHP数组有内部指针,所以试试这个:

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

    对我来说没问题(虽然只是经过初步测试) .

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

    $key 是每个 $array 元素的索引

  • 4

    你可以在你的 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++;
    }
    
  • 15

    应该注意的是,你可以在任何数组上调用key()以找到它所在的当前键 . 您可以猜测 current() 将返回当前值, next() 将数组的指针移动到下一个元素 .

  • 0

    欧文有一个很好的答案 . 如果您只想要密钥,并且您正在使用数组,这可能也很有用 .

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

    您可以在循环外创建 $i 并在循环的底部执行 $i++ .

  • 136

    这两个循环是等效的(当然是安全栏):

    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;
    }
    
  • 2

    乔纳森是对的 . 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循环 .

  • 0

    我认为最好的选择是这样的:

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

    很容易也很正常

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

    我通常在使用关联数组时这样做:

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

    这也适用于非关联数组 . $ key将是索引值 . 如果您愿意,也可以这样做:

    foreach ($array as $indx => $value) {
      //do something
    }
    
  • -4
    foreach($arrvariable as $key=>$value){
    echo "$key";
    }
    

相关问题