В настоящее время я создаю веб-сайт и сталкиваюсь со случаем, когда могу:

if (myString)

if (myArray),

И кажется, что он "возвращает" истину всякий раз, когда есть данные внутри переменной. По крайней мере, я так думаю.

Например.

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

Когда я утверждаю $testVar = "", отображается "Пусто".

Мне интересно, является ли это определенной функцией PHP, что любой тип будет возвращать истину, если он не является нулевым или пустым, как в других языках, вам нужно сделать if($testVar = "") или так далее.

Кроме того, если это действительно возвращает true для всех типов, если переменная не пуста, и я также хочу проверить, существует ли переменная, будет:

if (isset($testVar) && $testVar) можно использовать (с точки зрения практики)

Я искал вопросы, но не могу найти ответа на этот вопрос. Подводя итог:
Может ли любой тип возвращать логическое значение, если оно не пустое?

Спасибо.

0
Brugsen 29 Апр 2014 в 17:16

5 ответов

Лучший ответ

Эти типы не возвращают true, но вместо этого приводятся к true. PHP - язык со слабой типизацией, поэтому при необходимости он автоматически пытается преобразовать переменную в правильный тип. В большинстве случаев это означает, что непустая переменная вернет истину.

Этот ресурс предоставит вам дополнительную информацию. В частности, обратите внимание на раздел «Преобразование в логическое значение».

http://www.php.net/manual/en/language.types.boolean.php

4
Philip Bennison 29 Апр 2014 в 13:20

Вы не можете проверить, пуста ли строка таким образом. Учти это:

$test = "0";
if ($test)
    echo $test;
else
    echo "Empty";

Приведенный выше код выводит «Пусто», поскольку «0» является ложным значением. См. логические значения, раздел «Преобразование в логические».

Итак, ответ таков: все типы можно преобразовать в логические, но результат может быть не таким, как вы хотите.

1
luiscubal 29 Апр 2014 в 13:22

Переменные не «возвращают» логическое значение, но любая переменная может иметь значение true или false.

Лучшая практика - строго относиться к сравнениям, а не просто if($var)

Для получения подробной информации по сравнению см .: http://us3.php.net/manual/ ru / types.comparisons.php

0
keithhatfield 29 Апр 2014 в 13:20

Условный всегда возвращать bool, если вам нужно проверить любые пустые значения, вам нужно использовать оператор equalsto для проверочных значений

if($testVar == "") // check is $testVar is empty or not return bool-true/false

Лучше всего использовать такие функции, как empty()

if(empty($testVar))
0
Rakesh Sharma 29 Апр 2014 в 13:23

В этом примере when you are testing string variables:

$testVar = "test";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

Вы утверждаете, что это if variable $testVar is set (не пусто оно или нет). Сами переменные не имеют возвращаемого типа, но они используются в контексте, в котором они используются в операторе потока управления, таком как оператор if.

Т.е. if ($testVar) совпадает с if (isset($testVar)) (когда $ testVar является строкой)

Однако есть и другие подобные случаи:

$testVar = "0";
if ($testVar)
    echo $testVar;
else
    echo "Empty";

В этом случае вы получите «Пусто», потому что $testVar оценивается как int 0.

Тем не мение; если бы у вас было это:

$testVar = " 0"; // notice the space in front of 0
if ($testVar)
    echo $testVar;
else
    echo "Empty";

Это отразит $testVar, потому что переменная установлена ​​и имеет значение string.


Если вы хотите проверить пустую строку, у вас есть несколько вариантов:

  • if (empty($testVar))
  • if (strlen($testVar)) или if (strlen($testVar) > 0) (оба одинаковые)

Др...

0
Latheesan 29 Апр 2014 в 13:33