PHP 功能在我当前的 PHP 版本中不可用

PHP function is not available in my current PHP Version

我想使用函数 array_key_first (PHP 7 >= 7.3.0).

我当前的PHP版本是7.2

我按照 corresponding PHP manual

的 "User Contributed Notes" 部分中的描述使用 "Polyfill"

如果我在 polyfill 所在的 index.php 中调用 array_key_first 函数,一切正常。

如果我在 PHP 自写 class 中调用 array_key_first 函数,它不起作用。

如何定义 "Polyfills" 以便它们 "globally" 可用?

我不想定义一个 class 方法并用 $this->array_key_first...

调用它

我在 index.php 文件中包含以下代码

    if (!function_exists('array_key_first')) {
        function array_key_first(array $array){
            if (count($array)) {
                reset($array);
                return key($array);
            }
            return null;
        }
    }

感谢提示

我相信你可以使用 array_keys。
Array_keys 将按顺序获取所有键,其中 [0] 是第一个。

$arr = ["m" => 0,"b" => 1, "k"  => 2,"a" => 3];
$key = array_keys($arr)[0];

echo $key; //m

如果我们查看此示例,您会发现 array_keys 不会更改数组中的位置。

它首先回显 0,即键 0。
然后我将它移动一步,它回显 1.
然后我们做数组键并再次检查位置是什么,它仍然是 1.
https://3v4l.org/bhoEZ

如果您没有使用基于作曲家的工作流程来包含文件(当您第一次需要 autoload.php 文件时,它可以自动包含文件),只有两种方法。

  1. 手动包含一个文件以在任何使用的地方定义函数
  2. php.ini 文件更改为 'prepend' 文件(在主脚本运行之前包含一个 PHP 文件)

    auto_prepend_file="/path/to/polyfill.php"

如果您使用的是共享主机,则不太可能更改 php.ini 文件。

polyfill 定义函数如下:

 function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }

您可以在之前调用 key()[1] on the array to retrieve the first key, assuming that the array pointer is currently pointing at the first element, otherwise you would have to call reset()[2],例如:

$array = ['a' => 1, 'b' => 2];
var_dump(key($array));

$array = ['a' => 1, 'b' => 2];
reset($array);
var_dump(key($array));

https://3v4l.org/ELdhf

string(1) "a"