Как я могу передать ссылку на функцию с параметрами? [дубликат]

Примечание: Неопределенный индекс

Случается, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует в массиве.

Типичным примером для уведомления Undefined Index будет ( demo )

$data = array('foo' => '42', 'bar');
echo $data['spinach'];
echo $data[1];

Оба spinach и 1 не существуют в массив, вызывающий запуск E_NOTICE .

Решение состоит в том, чтобы убедиться, что индекс или смещение существуют до доступа к этому индексу. Это может означать, что вам необходимо исправить ошибку в вашей программе, чтобы убедиться, что эти индексы существуют, когда вы ожидаете их. Или это может означать, что вам нужно проверить, существуют ли индексы с помощью array_key_exists или isset :

$data = array('foo' => '42', 'bar');
if (array_key_exists('spinach', $data)) {
    echo $data['spinach'];
}
else {
    echo 'No key spinach in array';
}

Если у вас есть код например:


...

, тогда $_POST['message'] не будет установлена, когда эта страница будет загружена первой, и вы получите указанную выше ошибку. Только когда форма будет отправлена ​​и этот код будет запущен во второй раз, будет существовать индекс массива. Вы обычно проверяете это с помощью:

if ($_POST)  ..  // if the $_POST array is not empty
// or
if ($_SERVER['REQUEST_METHOD'] == 'POST') ..  // page was requested with POST

Вопросы, относящиеся:

88
задан Community 23 May 2017 в 11:46
поделиться

2 ответа

Что Вы, после назван , частичное функциональное приложение .

не дурачат те, которые не понимают тонкого различия между этим и приправлением карри, они отличающиеся.

Частичное функциональное приложение может использоваться для реализации, но не приправление карри. Вот кавычка от сообщение в блоге на различии :

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

Этому уже ответили, посмотрите этот вопрос для своего ответа: , Как я могу задать аргументы в вызове функции JavaScript?

Пример:

var fr = partial(f, 1, 2, 3);

// now, when you invoke fr() it will invoke f(1,2,3)
fr();

Снова, посмотрите что вопрос для деталей.

79
ответ дан Community 24 November 2019 в 07:37
поделиться

Следующее эквивалентно Вашему второму блоку кода:

var f = function () {
        //Some logic here...
    };

var fr = f;

fr(pars);

, Если Вы хотите на самом деле передать ссылку на функцию к некоторой другой функции, можно сделать что-то вроде этого:

function fiz(x, y, z) {
    return x + y + z;
}

// elsewhere...

function foo(fn, p, q, r) {
    return function () {
        return fn(p, q, r);
    }
}

// finally...

f = foo(fiz, 1, 2, 3);
f(); // returns 6

Вы - почти наверняка более обеспеченное использование платформы для этого вида вещи, все же.

-4
ответ дан lawnsea 24 November 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: