Я пишу функцию PHP с необязательным параметром и не могу заставить его работать.
function myFunc($param,$optional){
$var = $optional || [];
}
Логика в том, если он вызывается с $optional
парам это устанавливает $var
получить значение $optional
если оставить пустым $var
получить новый массив []
, Я получаю неопределенную переменную $var
хоть.
Вопрос: Почему я не могу объявить необязательный параметр в моей функции?
Вы должны объявить необязательный параметр в параметрах функции. Это не работает, потому что вы должны указать интерпретатору PHP ожидать параметр.
function myFunc($param, $optional = null){
// ...
}
В PHP 7+ вы можете использовать оператор распространения для распаковки аргументов для обозначения необязательных параметров. Это лучше, чем отправка массива аргументов в функцию.
function myFunc($param, ...$optional){
print_r($optional);
}
myFunc('baz'); // Array ( )
myFunc('baz', 'foo', 'foobar', 'whoo'); // Array ( [0] => foo [1] => foobar [2] => whoo )
Вы можете использовать что-то вроде этого:
function myFunc($param, $optional = '') {
$var = $optional;
if ($var == '') {
$var = [];
}
}
//without parameter
myFunc('abc');
//with parameter
myFunc('abc', 'optional param');
общий пример:
function myFunc($param, $optional1 = '', $optional2 = []) {
в общем старайтесь сохранить все необязательные параметры в конце