PHP:从数组中获取密钥?

Posted

技术标签:

【中文标题】PHP:从数组中获取密钥?【英文标题】:PHP: Get key from array? 【发布时间】: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 循环结构效率低。 【参考方案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;

【讨论】:

以上是关于PHP:从数组中获取密钥?的主要内容,如果未能解决你的问题,请参考以下文章

php:如何从数字索引中获取关联数组键?

Paypal 从 php 中的支付密钥获取交易详情

从配置单元中的 JSON 数组获取 JSON 密钥时面临的问题

如何从 Firebase 数据快照中获取密钥?

从 NSDictionary 按名称获取密钥

如何从 WooCommerce 中的订单密钥中获取订单 ID?