Случается, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует в массиве.
Типичным примером для уведомления 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
Вопросы, относящиеся:
Что Вы, после назван , частичное функциональное приложение .
не дурачат те, которые не понимают тонкого различия между этим и приправлением карри, они отличающиеся.
Частичное функциональное приложение может использоваться для реализации, но не приправление карри. Вот кавычка от сообщение в блоге на различии :
то, Откуда частичное приложение берет функцию и его, создает функцию, которая берет меньше аргументов, приправляя карри функции сборок, которые берут несколько аргументов составом функций, которые каждый берет отдельный аргумент.
Этому уже ответили, посмотрите этот вопрос для своего ответа: , Как я могу задать аргументы в вызове функции JavaScript?
Пример:
var fr = partial(f, 1, 2, 3);
// now, when you invoke fr() it will invoke f(1,2,3)
fr();
Снова, посмотрите что вопрос для деталей.
Следующее эквивалентно Вашему второму блоку кода:
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
Вы - почти наверняка более обеспеченное использование платформы для этого вида вещи, все же.