Я хотел бы использовать функцию 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;
}
}
Спасибо за подсказки
Если вы не используете рабочий процесс на основе композитора для включения файлов (который может включать файлы автоматически, когда вы впервые запрашиваете файл autoload.php), будет только два пути.
изменить php.ini
файл, чтобы «предварять» файл (включите файл PHP перед запуском основного скрипта)
auto_prepend_file = «/ путь / к / polyfill.php»
Если вы используете виртуальный хостинг, вряд ли вы сможете изменить файл php.ini.
Polyfill определяет функцию следующим образом:
function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
Я считаю, что вы можете использовать для этого 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
Вы можете просто позвонить key()
[1] в массиве, чтобы получить первый ключ, предполагая, что указатель массива в данный момент указывает на первый элемент, в противном случае вам придется вызывать reset()
[2] на это раньше, например:
$array = ['a' => 1, 'b' => 2];
var_dump(key($array));
или же
$array = ['a' => 1, 'b' => 2];
reset($array);
var_dump(key($array));
строка (1) «а»