2010-08-04 3 views

ответ

98

Вы сказали, что сами убедитесь, что это empty:

if (empty($_GET)) { 
    // no data passed by get 
} 

See, PHP настолько просто. Вы можете просто написать, что вы думаете;)

Этот метод достаточно безопасен. !$_GET может дать вам неопределенную переменную E_NOTICE, если $_GET не был установлен (не вероятно, но возможно).

+0

Нет, ваш код не должен генерировать ошибки уровня уведомлений. –

+1

@Frank Это правда ... когда все идет хорошо. Но разве это не уведомление, что вы ожидаете, если $ _GET не будет установлен? Разве это не единственная цель такого уведомления? –

+3

Нет, вы никогда не захотите, чтобы ваш код выдал вам уведомление. Ошибки исходного кода исходного кода всегда считаются плохими. – NikiC

7
<?php 
if (!isset($_GET) || empty($_GET)) 
{ 
    // do stuff here 
} 
+7

'! Исеть ($ _ GET)' не нужно здесь, 'если (пусто ($ _ GET))' будет достаточно –

+0

К сожалению, мой плохой. .. – john010117

+2

Just FYI: $ _GET _can_ быть неустановленным, однако очень редко настраивать PHP таким образом (см. 'Variables_order') – Wrikken

12

я думаю, самый простой способ, который не требует каких-либо операторов

if($_GET){ 
//do something if $_GET is set 
} 
if(!$_GET){ 
//do something if $_GET is NOT set 
} 
+1

-1, учитывая, что это может вызвать ошибку уведомления. Использование пустого теста - лучшая альтернатива. –

+3

+1 для использования не нужно использовать empty(). @premiso получил реальный пример, чтобы доказать, почему это лучше? –

+0

Кол, нет, я на самом деле этого не делаю. Но я мог спросить того же из вас, почему ваш «лучше», и если вы можете предоставить мне реальные примеры того, почему ваше решение лучше, реальный ответ является действительным (после моих нечетких тестов). Так что да, я был не прав для downvote, и если пользователь изменяет это, я переключу его. Предпочтение отдается предпочтению, я предпочитаю использовать пустой. Единственная причина, по которой я могу это объяснить, - это пустая проверка, если элемент пуст.Учитывая, что $ _GET не задан, возвращает массив (0) из var_dump, кажется, что, по-моему, выбор лучше использовать. –

3
if (!$_GET) echo "empty"; 

зачем вам нужна такая проверка?

lol
Вы, ребята, слишком непосредственны.
не воспринимают как оскорбительные, но иногда не склонны вообще
$ _GET - это особая переменная, а не как другие.
он должен быть всегда установлен. нет необходимости рассматривать его как другие переменные. когда $ _GET не установлен и ожидается - это аварийный случай и то, что «Неопределенная переменная» уведомление изобретены для

+0

OMG! О, МОЙ БОГ! Вы должны использовать isset() !! Иначе это не безопасно !!!!! 1! – mario

+1

@mario получил какой-нибудь пример для демонстрации? –

+0

Существует параметр ini, называемый 'variables_order', который позволяет вам установить, какие переменные установить и которые не устанавливать. Кроме того, программист может захотеть отключить '$ _GET' - по какой-то причине. – NikiC

2

Я хотел бы использовать следующее, если заявление, потому что это легче читать (и изменения в будущем)


if(!isset($_GET) || !is_array($_GET) || count($_GET)==0) { 
    // empty, let's make sure it's an empty array for further reference 
    $_GET=array(); 
    // or unset it 
    // or set it to null 
    // etc... 
} 
+1

'if (! Empty ($ _ GET)) {}' еще проще читать. 'empty()' возвращает 'TRUE', если массив не содержит элементов. – kiamlaluno

+0

Что делать, если $ _GET - это строка? или объект? Я наткнулся на скрипты, которые испортили $ _GET, и я обычно проверяю, является ли переменная типом «знаю», это должно быть ... –

+0

это легко. просто избегайте таких скриптов :) Честно говоря, ваш код переполнен –

3

Простой.

if (empty($_GET)) { 
    // $_GET is empty 
} 
8

Просто, чтобы обеспечить некоторые вариации здесь: Вы можете проверить

if ($_SERVER["QUERY_STRING"] == null) 

она полностью идентична проверке $_GET.

+0

+1 Я думал об одном и том же, но не был уверен в том, что вам нужно проверить. Против '! Isset',' null' или '' ''. Работает ли «нуль» здесь, вы протестировали? – NikiC

+0

@nikic yup, проверено и работает. Поскольку он исходит из Apache, он всегда будет установлен, даже если он пуст, поэтому проверка 'array_key_exists()' не требуется. –

+0

все будет работать, niki –

2

Вот 3 различные методы, чтобы проверить это

<?php 
//Method 1 
if(!empty($_GET)) 
echo "exist"; 
else 
echo "do not exist"; 
//Method 2 
echo "<br>"; 
if($_GET) 
echo "exist"; 
else 
echo "do not exist"; 
//Method 3 
if(count($_GET)) 
echo "exist"; 
else 
echo "do not exist"; 
?> 
Смежные вопросы