передача параметров — передача неопределенного индекса в функцию PHP

У меня есть функция, которая выглядит примерно так:

function name( param1 = default, param2 = default, param3 = default) {...}

Я вызываю функцию, передавая элементы массива как параметры:

name( $param['foo'], $param['bar'], $param['hello'] );

Мой вопрос — если один (или более) из элементов, переданных в вызове функции, не определен, как он обрабатывается внутри самой функции? Я спрашиваю, потому что я пытаюсь вызвать функцию, но у меня нет никакого способа узнать, определен ли какой-либо из элементов.

Внутри функции я попытался отладить параметр, переданный через isset(), is_null(), а также empty() и я получил ложь, правда и правда соответственно. Это приводит меня к мысли, что, поскольку что-то действительно передается, значение по умолчанию не установлено. Если бы кто-нибудь мог объяснить, как с этим справляются, я был бы признателен.

0

Решение

Функция, как правило, не имеет ни малейшего представления, и, как правило, не имеет значения, откуда берется аргумент. например

$x = 2;
foo($x);
foo(2);

Так далеко как foo() обеспокоен, он просто увидит 2 входите, и ничто не скажет это «это 2 было жестко закодировано» или «это 2 было передано через переменную».

Если вы передадите неопределенную переменную, то сама функция увидит null значение приходит, и PHP выдаст предупреждение об использовании неопределенной переменной, ДО того, как у кода функции появится шанс начать выполнение.

0

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

Краткий ответ: это значение NULL, которое является постоянным значением, обозначающим нулевое или неинициализированное значение.

1


Вызов неопределенного индекса в массиве приводит к предупреждению.

Два правила для вас:

  • Передавать / использовать только определенные вещи
  • Никогда не отключайте предупреждения / ошибки

Пример:

$params = ['foo' => 1, 'bar' => null, 'nextKey' => null];

Обычный подход — передать массив (sub):

myMethod($params);

Ваш метод принимает необходимые элементы.

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