我当前的PHP版本中没有PHP函数

时间:2018-11-09 09:25:51

标签: php polyfills

我想使用功能 array_key_first (PHP 7> = 7.3.0)。

我当前的PHP版本是 7.2

我使用corresponding PHP manual“用户贡献的注释”部分中所述的“填充”

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

如果我在PHP自行编写的类中调用 array_key_first 函数,则该函数无效。

如何定义“填充”,以便“全局”可用?

我不想定义一个用$ 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;
        }
    }

感谢提示

3 个答案:

答案 0 :(得分:0)

我相信您可以为此使用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

答案 1 :(得分:0)

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

  1. 手动添加文件以定义使用该功能的地方
  2. <input type="checkbox" id="lock" onClick="locker()"> <input type="text"></input> <input type="text"></input> <input type="text"></input>文件更改为“前置”一个文件(在运行主脚本之前包含一个PHP文件)

    auto_prepend_file =“ / path / to / polyfill.php”

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

polyfill定义如下功能:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }

答案 2 :(得分:0)

假设数组指针当前指向第一个元素,您只需在数组上调用key() [1]即可检索第一个键,否则必须调用{{1 }} [{2]之前,例如:

reset()

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

https://3v4l.org/ELdhf

  

string(1)“ a”