В общем, есть такой код:
$arr =["1","2","6"];
function test($a,$z)
{
$minus=$z[1]-$a;
return $minus;
}
echo test(2,$arr);
Возможно ли сделать что бы не всегда указывать на $arr? Типа так:
$arr =["1","2","6"];
function test($a)
{
$minus=$arr[1]-$a;
return $minus;
}
echo test(2);
Или как то по другом можно?
Можно в теле функции объявить массив $arr глобальным:
$arr = [1, 2, 6];
echo test(2);
function test($a) {
global $arr;
return $arr[1] - $a;
}
Но это не считается хорошей практикой.
Если у вас PHP не ниже версии 7, то ещё можно объявить константу со структурой массива (константы имеют глобальную область видимости):
const ARR = [1, 2, 6];
echo test(2);
function test($a) {
return ARR[1] - $a;
}
Если версия с константами не подходит, можно формировать для передачи в функцию массив, добавляя в первый элемент то значение, с которым нужно работать в теле функции. А в теле функции - извлекать из массива этот первый элемент:
$arr = [1, 2, 6];
array_unshift($arr, 2);
echo test($arr);
function test($arr) {
$a = array_shift($arr);
return $arr[1] - $a;
}
Ну и ещё один из вариантов - создать ещё одну пользовательскую функцию, которая будет возвращать массив, и вызывать эту функцию в теле первой функции:
echo test(2);
function test($a) {
return get_array()[1] - $a;
}
function get_array() {
return [1, 2, 6];
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей