【问题标题】:PHP: Get key from array?PHP:从数组中获取密钥?
【发布时间】:2011-03-20 01:44:33
【问题描述】:

我确信这是 PHP 中超级简单的内置函数,但我还没有看到它。

这是我目前正在做的事情:

foreach($array as $key => $value) {
    echo $key; // Would output "subkey" in the example array
    print_r($value);
}

我是否可以改为执行以下操作,从而避免在每个 foreach 循环中编写“$key => $value”? (伪代码)

foreach($array as $subarray) {
    echo arrayKey($subarray); // Will output the same as "echo $key" in the former example ("subkey"
    print_r($value);
}

谢谢!

数组:

Array
(
    [subKey] => Array
        (
            [value] => myvalue
        )

)

【问题讨论】:

  • foreach($array as $key => $value) 有什么问题?或者,反过来问,当你真正需要$key 时,使用foreach($array as $value) 有什么意义?
  • 我只是觉得快速拿到钥匙是个好主意
  • 但是您确实可以通过 foreach($array as $key => $value)... 快速获得它 :-) 或者情况不是您处于 foreach 循环中?
  • 我肯定在 foreach 循环中,但我想到的是不要更改 foreach 语句,而只是打印出密钥。
  • 您可以进行的每个函数调用都比简单地更改为适当的 foreach 循环结构效率低。

标签: php arrays multidimensional-array key


【解决方案1】:

使用array_search 函数。

来自 php.net 的示例

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;

【讨论】:

    【解决方案2】:
    $array = array(0 => 100, "color" => "red"); print_r(array_keys($array));

    【讨论】:

      【解决方案3】:

      如果它是您在问题中描述的foreach 循环,则使用$key => $value 快速且高效。

      【讨论】:

        【解决方案4】:

        你可以使用key():

        <?php
        $array = array(
            "one" => 1,
            "two" => 2,
            "three" => 3,
            "four" => 4
        );
        
        while($element = current($array)) {
            echo key($array)."\n";
            next($array);
        }
        ?>
        

        【讨论】:

        • 我想补充一点,你可以在任何地方使用 key() 但对于这个问题,在 while 循环中使用它是有意义的。您可以在只想要第一个/当前数组元素的键的情况下使用 key()。
        • @Industrial foreach 使用密钥...如果您想使用 foreach,请执行以下操作:foreach($array as $key =&gt; $value) { ... }
        【解决方案5】:
        $foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke');
        
        foreach($foo as $key => $item) {
          echo $item.' is begin with ('.$key.')';
        }
        

        【讨论】:

          【解决方案6】:

          在 foreach 循环中使用 key($array) 的另一种方法是在循环结束时使用 next($array),只要确保每次迭代都调用 next() 函数(以防内部有复杂的分支循环)

          【讨论】:

            【解决方案7】:

            如果您想进入foreach 循环,那么foreach($array as $key =&gt; $value) 绝对是推荐的方法。当一种语言提供简单的语法时,请利用它。

            【讨论】:

              【解决方案8】:

              试试这个

              foreach(array_keys($array) as $nmkey)
                  {
                      echo $nmkey;
                  }
              

              【讨论】:

                【解决方案9】:

                这是一个通用解决方案,您可以将其添加到您的 Array 库中。您需要做的就是提供关联的值和目标数组!

                PHP Manual: array_search()(类似于其他语言的 .indexOf())

                public function getKey(string $value, array $target)
                {
                    $key = array_search($value, $target);
                
                    if ($key === null) {
                        throw new InvalidArgumentException("Invalid arguments provided. Check inputs. Must be a (1) a string and (2) an array.");
                    }
                
                    if ($key === false) {
                        throw new DomainException("The search value does not exists in the target array.");
                    }
                
                    return $key;
                }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-02-28
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-10-03
                  • 2016-10-11
                  • 1970-01-01
                  相关资源
                  最近更新 更多