PHP 函数在我当前的 PHP 版本中不可用

Mar*_*ler 6 php polyfills

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

我当前的 PHP 版本是7.2

我使用相应 PHP 手册的“用户贡献注释”部分中描述的“Polyfill”

如果我在 index.php 中调用array_key_first函数(polyfill 所在的位置),一切都会正常。

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

如何定义“Polyfills”以便它们“全局”可用?

我不想定义一个类方法并用 $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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

感谢您的提示

And*_*eas 6

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

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

echo $key; //m
Run Code Online (Sandbox Code Playgroud)

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

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


Ali*_*man 1

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

  1. 手动包含文件以定义函数(无论在何处使用)
  2. 更改php.ini文件以“前置”文件(在主脚本运行之前包含 PHP 文件)

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

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

polyfill 定义了这样的函数:

 function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
Run Code Online (Sandbox Code Playgroud)