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()。 @Industrialforeach
使用密钥...如果您想使用 foreach,请执行以下操作:foreach($array as $key => $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 => $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:从数组中获取密钥?的主要内容,如果未能解决你的问题,请参考以下文章