Чтение PHP 'становится' переменным, который может или не мог быть установлен

При попытке считать значение 'получить' переменной, что происходит, если упомянутая переменная не была установлена в URL. Пример: Вы запрашиваете страницу test.php, в том файле это пытается считать значение $_GET['message']. Что происходит в этом случае? дозируйте значение, просто возвращаются как ''?

Делает это означает, что, если я всегда ожидаю, что значение будет введено, и не готово принять значение, '' как который я могу просто сделать что-то

$foo = $_GET['bar'];
if($foo == ''){
  // Handle my 'error'
}
else
{
  // $foo should now have a value that I can work with
}

Следует иметь в виду, что я знаю, что мог использовать isset($_GET['bar']) Но я только хочу знать, установлено ли это, я не забочусь, ли это или нет, я просто забочусь, имеет ли это значение, которое является больше, чем просто пустая строка.

8
задан thecoshman 11 July 2014 в 12:13
поделиться

3 ответа

Если вам все равно, установлено ли значение на самом деле, вы можете использовать это:

if (empty($_GET['bar']))
    // value is null, false, 0, '0' or an empty string (including whitespace).
7
ответ дан 5 December 2019 в 12:09
поделиться

Если я правильно понимаю, это:

$foo = $_GET['bar'];
if ((!isset($foo)) || $foo == '') {
//GET veriable not set, error
}
else {
// GET veriable set, code here.
}
0
ответ дан 5 December 2019 в 12:09
поделиться

Если вы попытаетесь обратиться к несуществующему элементу массива, результатом будет null.

$foo = $_GET['bar']; //$foo is now null

Стоит отметить, что если вы используете слабый оператор сравнения ==, а не строгое сравнение ===, то ''' будет рассматриваться как null.

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

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

if ( !isset($_GET['bar']) ){
    //handle error or assign default value to $foo
}else{
    $foo = $_GET['bar'];
}

Если вы хотите иметь значение по умолчанию и заменять его только в том случае, если существует значение $_GET, вы можете использовать условный оператор (прокрутите вниз до "Тернарный оператор")

$foo = isset($_GET['bar']) ? $_GET['bar'] : 'default value';
6
ответ дан 5 December 2019 в 12:09
поделиться
Другие вопросы по тегам:

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