polyfills — функция PHP недоступна в моей текущей версии PHP

Я хотел бы использовать функцию array_key_first (PHP 7> = 7.3.0).

Моя текущая версия PHP 7,2

Я использую «Polyfill», как описано в разделе «Примечания пользователя» соответствующее руководство по PHP

Если я позвоню array_key_first Функция в моем index.php, где находится polyfill, все работает отлично.

Если я позвоню array_key_first функция внутри написанного PHP класса, это не работает.

Как я могу определить «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;
}
}

Спасибо за подсказки

0

Решение

Если вы не используете рабочий процесс на основе композитора для включения файлов (который может включать файлы автоматически, когда вы впервые запрашиваете файл autoload.php), будет только два пути.

  1. Включите файл вручную, чтобы определить функцию, где бы он ни использовался
  2. изменить php.ini файл, чтобы «предварять» файл (включите файл PHP перед запуском основного скрипта)

    auto_prepend_file = «/ путь / к / polyfill.php»

Если вы используете виртуальный хостинг, вряд ли вы сможете изменить файл php.ini.

Polyfill определяет функцию следующим образом:

 function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
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

0

Вы можете просто позвонить key()[1] в массиве, чтобы получить первый ключ, предполагая, что указатель массива в данный момент указывает на первый элемент, в противном случае вам придется вызывать 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

строка (1) «а»

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector