PHP:从数组中获取密钥?

问题描述 投票:0回答:10

我确信这是非常简单的 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
        )

)
php arrays multidimensional-array key
10个回答
79
投票

您可以使用key():

<?php
$array = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "four" => 4
);

while($element = current($array)) {
    echo key($array)."\n";
    next($array);
}
?>

48
投票

使用

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;

40
投票
$foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke');

foreach($foo as $key => $item) {
  echo $item.' is begin with ('.$key.')';
}

17
投票

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));


7
投票

如果它是一个

foreach
循环,正如您在问题中所描述的那样,那么使用
$key => $value
既快速又高效。


3
投票

如果您想处于

foreach
循环中,那么
foreach($array as $key => $value)
绝对是推荐的方法。当语言提供简单语法时,请充分利用它。


0
投票

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


0
投票

试试这个

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

0
投票

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

PHP 手册: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;
}

0
投票

这就是你需要的

$key = key($array);
© www.soinside.com 2019 - 2024. All rights reserved.