Истинное возвращение 1

71
8

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

$num = 3;

function number($num)
{
for($i = 2; $i < $num; $i++) {

if($num % $i == 0) {
echo("false");

return false;
}
}
echo("true");

return true;
}

echo number($num);

спросил(а) 2013-03-25T07:24:00+04:00 7 лет, 7 месяцев назад
1
Решение
58

Когда вы пытаетесь повторить что-то значение, значение будет преобразовано в строку. Итак, вы пытаетесь эхо логически. Хорошо, прочитайте документацию о преобразовании в строку


Булево значение TRUE преобразуется в строку "1". Boolean FALSE преобразуется в "" (пустая строка).

ответил(а) 2013-03-25T07:32:00+04:00 7 лет, 7 месяцев назад
59

повторение истины всегда даст вам 1. Попробуйте

var_dump($num);

Это покажет вам, каков тип и значение переменной. Вы увидите, что это правда.

ответил(а) 2013-03-25T07:28:00+04:00 7 лет, 7 месяцев назад
58

Потому что в PHP TRUE совпадает с 1 в строчном формате. Однако PHP обрабатывает тип данных по-разному, поэтому вам необходимо использовать оператор === для проверки типа и данных.

Любые сравнения, которые вы делаете, должны использовать оператор ===.

Один из способов увидеть, что на самом деле возвращается, - использовать var_dump для вывода.

ответил(а) 2013-03-25T07:27:00+04:00 7 лет, 7 месяцев назад
41

В вашем случае вы неявно преобразуете логическое значение true в целое число, значение которого будет равно 1.

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

Кроме того, var_dump() и print_r() отображает тип переменной.

ответил(а) 2013-03-25T07:28:00+04:00 7 лет, 7 месяцев назад
41

Когда вы echo number($num); true передается как строка, которая выходит "1".

ответил(а) 2013-03-25T07:28:00+04:00 7 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема