PHP:从数组获取密钥?

时间:2010-07-23 11:54:49

标签: php arrays multidimensional-array key

我确信这是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
        )

)

9 个答案:

答案 0 :(得分:62)

答案 1 :(得分:40)

使用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 :(得分:30)

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

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

答案 3 :(得分:13)


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

答案 4 :(得分:6)

答案 5 :(得分:1)

如果您想要进入getItemId循环,那么foreach绝对是推荐的方法。当语言提供时,可以利用简单的语法。

答案 6 :(得分:0)

在foreach循环中使用key($ array)的另一种方法是在循环结束时使用next($ array),只需确保每次迭代调用next()函数(如果你在里面有复杂的分支)循环)

答案 7 :(得分:0)

试试这个

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

答案 8 :(得分:0)

这是可以添加到阵列库的通用解决方案。您所需要做的就是提供关联的值和目标数组!

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