【问题标题】:PHP - Getting the index of a element from a arrayPHP - 从数组中获取元素的索引
【发布时间】:2011-04-15 10:42:23
【问题描述】:

在遍历数组时如何获取当前元素号?

我知道 count(),但我希望也有一个内置函数来获取当前字段索引,而不必添加额外的计数器变量。

像这样:

foreach($array as $key => value)
  if(index($key) == count($array) ....

【问题讨论】:

  • 使用$key有什么问题?
  • $key 在我的例子中是一个字符串。无论如何,我只是想知道是否有一个可以获取字段索引的 php 函数。如果没有,我将使用 $i 计数器...
  • 在key与数组元素的索引不匹配的数组的情况下,相信Alex想获取当前索引。例如:a => apples, b => bananas:那么index(b) 将返回1
  • 字段索引 == 键。这是同样的事情。不,没有办法获得项目的位置。
  • Foreach 使用迭代器 - 永远不知道索引

标签: php arrays field


【解决方案1】:

您应该使用key() 函数。

key($array)

应该返回当前键。

如果需要当前键的位置:

array_search($key, array_keys($array));

【讨论】:

  • OP 想要一个职位,而不是一把钥匙。不需要像它一样得到一个 kay;a 已经分配给 $key 变量
  • +1 好答案,我想向 Alex 指出,添加一个计数器会比每次搜索数组更有效。
  • 所以没有类似索引的功能。谢谢 :) 我会用计数器
  • 我会投赞成票,因为这对我来说似乎有点矫枉过正。每次迭代对整个数组进行 2 次额外循环!
【解决方案2】:

PHP 数组是整数索引和字符串索引的。你甚至可以混合它们:

array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow');

您希望值'blue' 的索引是什么?是3吗?但这实际上是值 'yellow' 的索引,所以这是一个模棱两可的地方。

另一种解决方案是将数组强制转换为整数索引的值列表。

foreach (array_values($array) as $i => $value) {
  echo "$i: $value\n";
}

输出:

0: red
1: green
2: white
3: blue
4: yellow

【讨论】:

    【解决方案3】:
    foreach() {
        $i++;
        if(index($key) == $i){}
        //
    }
    

    【讨论】:

    • 他说不用添加额外的计数器变量
    【解决方案4】:
    function Index($index) {
        $Count = count($YOUR_ARRAY);
        if ($index <= $Count) {
            $Keys = array_keys($YOUR_ARRAY);
            $Value = array_values($YOUR_ARRAY);
            return $Keys[$index] . ' = ' . $Value[$index];
        } else {
            return "Out of the ring";
        }
    }
    
    echo 'Index : ' . Index(0);
    

    替换 ($YOUR_ARRAY)

    【讨论】:

      【解决方案5】:

      我最近不得不自己解决这个问题,最终找到了一个受@Zahymaka 回答启发的解决方案,但解决了数组的 2x 循环问题。

      你可以做的是用你的所有键创建一个数组,按照它们存在的顺序,然后循环遍历它。

              $keys=array_keys($items);
              foreach($keys as $index=>$key){
                          echo "position: $index".PHP_EOL."item: ".PHP_EOL;
                          var_dump($items[$key]);
                          ...
              }
      

      PS:我知道这对聚会来说已经很晚了,但是因为我发现自己正在寻找这个,也许这对其他人有帮助

      【讨论】:

        【解决方案6】:

        当元素关联时,数组不包含索引。 php 中的数组可以包含如下混合值:

        $var = array("apple", "banana", "foo" => "grape", "carrot", "bar" => "donkey");   
        print_r($var);
        

        给你:

        Array
        (
            [0] => apple
            [1] => banana
            [foo] => grape
            [2] => carrot
            [bar] => donkey
        )
        

        由于您需要关联数组中的索引值,您想要实现什么?

        【讨论】:

          【解决方案7】:

          没有办法获得你真正想要的职位
          对于关联数组,要确定最后一次迭代,您可以使用已经提到的计数器变量,或者先确定最后一项的键:

          end($array);
          $last = key($array);
          foreach($array as $key => value)
            if($key == $last) ....
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-15
            • 1970-01-01
            • 2022-01-12
            • 2012-09-15
            • 2012-11-23
            • 1970-01-01
            • 2021-05-13
            相关资源
            最近更新 更多