如何用PHP的array_key_first输出键'a'及值1?解析实现有效性
PHP array_key_first用法的原理与合法性解释
问题背景
PHP官方手册里array_key_first函数的示例代码是这样的:
<?php $array = ['a' => 1, 'b' => 2, 'c' => 3]; $firstKey = array_key_first($array); var_dump($firstKey); ?>
输出结果是:
string(1) "a"
我想要输出键a和对应的值1,拼成a1,自己写出了下面的代码,但不知道它为啥能跑,也不确定这么写合不合法,想搞清楚原理:
<?php $array = ['a' => 1, 'b' => 2, 'c' => 3]; $firstKey = array_key_first($array); echo array_key_first($array); echo $array[array_key_first($array)]; ?>
在PHP 8.1.10里运行结果确实是a1。
原理和合法性说明
array_key_first是什么:这是PHP 7.3之后官方推出的函数,专门用来获取数组的第一个键名,属于合法的官方API,比以前用reset()加key()的老写法更直接可靠。- 你的代码生效逻辑:
- 第一次
echo array_key_first($array):调用函数返回数组第一个键a,直接输出这个字符串。 - 第二次
echo $array[array_key_first($array)]:再次调用函数拿到a,用这个键作为索引去数组中取值,得到1后输出。 - 两次
echo是连续输出的,所以a和1会拼接成a1。
- 第一次
- 写法完全合法:PHP允许在表达式中直接调用函数,比如把
array_key_first的返回值当作数组索引,这完全符合语法规范,没有任何问题。唯一需要注意的是,你的PHP版本必须是7.3及以上,不然这个函数会报错。 - 小优化建议:你已经把第一个键存在
$firstKey变量里了,完全可以复用这个变量,减少一次函数调用,代码更高效:
这样只调用一次echo $firstKey; echo $array[$firstKey];array_key_first,性能更好,代码也更清爽。
内容的提问来源于stack exchange,提问作者ImAlways_Confused
相关产品推荐
相关产品推荐

