В PHP, если переменная не имеет значения, почему isset () по-прежнему возвращает TRUE? - PullRequest
0 голосов
/ 11 февраля 2011

Вот мой код:

<?php
   $ja = ''; 

  if(isset($ja))
   echo "cool!";

?>

Я получаю "круто!" при запуске этого простого куска кода в моем браузере. Я узнал от php.net, что

isset - определить, установлена ​​ли переменная и не NULL

Ну, в моем коде я объявил переменную $ ja, но я не добавил к ней никакого значения, поэтому не должно ли это быть "NULL"?

Ответы [ 6 ]

5 голосов
/ 11 февраля 2011

Несмотря на то, что '' кажется ничем, оно все равно имеет значение (символ NULL в конце строки).

isset() проверяет, установлена ​​ли переменная или нет, что в данном случае (до ''), так и есть. Возможно, вы захотите сначала установить $ ja в NULL, вместо того, чтобы устанавливать пустую строку ... или использовать empty();)

3 голосов
/ 11 февраля 2011

Вы добавили значение в $ ja - вы установили его в пустую строку. Пустая строка не равна нулю.

Что может вас смущать, так это то, что пустая строка и null оба оцениваются как "false" в PHP, когда вы приводите его к логическому.

Документация PHP довольно понятна при использовании isset .

3 голосов
/ 11 февраля 2011

Isset используется для определения, установлена ​​ли переменная или нет:

isset($notDefined) //false
$notDefined = 0;
isset($notDefined) //true

(при условии, что $ notDefined ранее не определялся)

Чтобы проверить, является ли переменная пустойВы можете использовать if(empty($var)) или if($var==0)

3 голосов
/ 11 февраля 2011

Пустая строка все еще является значением. таким образом, вы дали значение, которое не является нулевым - '' является совершенно нормальным строковым значением. возможно вы хотите ! empty($ja)

0 голосов
/ 11 февраля 2011

Как следует из названия функции, она проверяет, установлена ​​ли какая-либо переменная, в некотором смысле не в том, что она имеет какое-то значение, а в том смысле, что она была создана.Я думаю, что название может быть немного запутанным, поэтому я приведу аналогию с JavaScript.В javascript, чтобы проверить, существует ли переменная, вы делаете следующее:

if (typeof(somevar) == "undefined")
    alert("Sorry, the variable has not been set already")
else
    alert("Congratulations, the variable has not been set")

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

Надеюсь, это поможет

0 голосов
/ 11 февраля 2011

Функция isset определяет, имеет ли объект значение. «NULL» - действительно единственный способ дать объекту значение ничего. $ s = '' просто ничего не дает. Значения BOOL (true / false) говорят, что это да или нет ... 0 просто дает объекту значение int равное 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...