Необязательный параметр

Я пишу функцию PHP с необязательным параметром и не могу заставить его работать.

function myFunc($param,$optional){
$var = $optional || [];
}

Логика в том, если он вызывается с $optional парам это устанавливает $var получить значение $optional если оставить пустым $var получить новый массив [], Я получаю неопределенную переменную $var хоть.

Вопрос: Почему я не могу объявить необязательный параметр в моей функции?

0

Решение

Вы должны объявить необязательный параметр в параметрах функции. Это не работает, потому что вы должны указать интерпретатору 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 )
2

Другие решения

Вы можете использовать что-то вроде этого:

function myFunc($param, $optional = '') {
$var = $optional;
if ($var == '') {
$var = [];
}
}
//without parameter
myFunc('abc');
//with parameter
myFunc('abc', 'optional param');

общий пример:

function myFunc($param, $optional1 = '', $optional2 = []) {

в общем старайтесь сохранить все необязательные параметры в конце

1

По вопросам рекламы [email protected]