2016-10-05 2 views
0

Рассмотрим следующий пример:Нужно ли всегда проверять, установлены ли сообщения и получать переменные перед их чтением/использованием?

if (isset($_POST['type']) && 'page' == $_POST['type']) 
    return; 

мы нуждаемся в isset($_POST['type']) чек?

Из того, что я видел до сих пор следующие есть результат, кажется:

if ('page' == $_POST['type']) 
    return; 

Или это может вызвать проблемы в определенных ситуациях?

+1

Если error_reporting включен и $ _POST ['type'] не установлен, он генерирует неопределенное предупреждение индекса. –

+0

Я всегда проверяю с isset, после isset я проверяю с отделкой, если она равна нулю или нет. –

+0

isset() и empty являются важными функциями php .. issset() только проверяет, что переменная не является нулевой, но пустой() проверяет, установлена ​​ли переменная, и если она проверяет ее на null, "", 0 , и т. д. Использование обеих функций - зрелая татика для решения pblms .. , пожалуйста, прочитайте руководство по php для более – anuraj

ответ

0

Использование «isset» является правильным подходом, иначе оно будет выдавать предупреждение: «Тип индекса не определен». Также он проверяет, пуст ли массив или нет.

isset() функция будет служить заменой двух функций

if(!empty(your_array) && array_key_exists('type',$POST['type'])) 

Так используйте эту проверку, чтобы избежать дальнейших осложнений

+1

Фактически 'empty' подразумевает' isset' и добавляет дополнительные проверки –

+0

Использование 'empty' отбрасывает любое значение, равное (не эквивалентное), на false' $ var == false '. Проверьте это на http://php.net/manual/en/function.empty.php –

0

Это может вызвать проблемы, такие как уведомления об ошибке: PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"

Вы можете использовать array_key_exists вместо от isset. Метод array_key_exists определенно скажет вам, существует ли ключ в массиве, тогда как isset будет возвращать true только в том случае, если ключ/переменная существует и не является нулевым.

Существует еще одно важное отличие. isset не жалуется, когда $ x не существует, а array_key_exists.

$x = [ 
    'key1' => 'abcd', 
    'key2' => null 
]; 

isset($x['key1']);    // true 
array_key_exists('key1', $x); // true 

isset($x['key2']);    // false 
array_key_exists('key2', $x); // true 
+0

Только использование 'array_key_exists' не будет служить цели. Ю. придется применить еще одну проверку 'empty'. Поскольку array_key_exists не будет проверять, пуст ли ваш массив или нет. После того, как вы пройдете проверку 'if (! Empty (my_array)', тогда проверьте его ключ, имеет ли этот массив ключ или нет. –