Вопрос по PHP

Master812
На сайте с 23.12.2007
Offline
168
471

Занялся изучением php и наткнулся на один непонятный и удивительный момент!:)))

В книжке написано, что функция isset($per1) возвращает значение "истина" (true), если переменная $per1 существует. Я решил это проверить! Вставил его в переменную, чтобы $per2 была равна тому значению, которое выдаст эта функция.

Вписал в php-файл вот этот код:

<?php

$per1=0;

$per2=isset($per1);

echo $per2;

?>

В результате в окне браузера отобразилась цифра "1" вместо "true".

Вопрос 1: Кто-нибудь мне может объяснить почему?

Дальше еще интереснее!:))) В книжке написано, что функция (или оператор) unset($per1) убивает эту переменную. Я вставил его в код так:

<?php

$per1=0;

unset($per1);

$per2=isset($per1);

echo $per2;

?>

И о чудо! Функция осталась жива несмотря на зловещую функцию-убийцу под именем "unset"! :))) При этом после вывода на экран браузера цифры "1" загрузка страницы продолжается, но что там грузится мне не ясно.

Вопрос 2: Почему она осталась жива?

Вопрос 3: Почему загрузка страницы после вывода на экран значения не остановилась?

Извините, если я задал слишком глупый вопрос. Я новичек в php и возможно чего-то не понимаю)))

P.S. Тестировал на php 5.2.10

raspberry pi сайт ( https://4raspberrypi.ru/ ) и orange pi сайт ( https://orangepi.su/ ) и новостной движок ( https://generalscript.ru/ )
F
На сайте с 12.09.2003
Offline
120
#1
Вопрос 1: Кто-нибудь мне может объяснить почему?

1 эквивалент true

0 эквивалент false

[Удален]
#2

1. true = 1, false = 0(""), обычное приведение к строке, ведь echo печатает строки :) если надо внутреннее устройство - юзайте var_dump

2. какой ужас. видимо тчото пошло не так.

3. так надо

KB
На сайте с 10.08.2006
Offline
164
KGB
#3
Master812:
В результате в окне браузера отобразилась цифра "1" вместо "true".
Вопрос 1: Кто-нибудь мне может объяснить почему?

true и 1 в определеных моментах одно и тоже (не всегда)

SS
На сайте с 14.04.2006
Offline
110
#4
Master812:

В результате в окне браузера отобразилась цифра "1" вместо "true".
Вопрос 1: Кто-нибудь мне может объяснить почему?

Потому что значение переменной булевого типа true преобразуется в строку как "1".

KB
На сайте с 10.08.2006
Offline
164
KGB
#5
Master812:
$per1=0;
unset($per1);
$per2=isset($per1);
echo $per2;

Все убивается

Master812
На сайте с 23.12.2007
Offline
168
#6
Faster:
1 эквивалент true
0 эквивалент false

Faster, SEO.Slash, KGB, bearman, спасибо! с 1-ым вопросом разобрались. Почему-то в книжке про эквиваленты не сказано ни слова(((

2. какой ужас. видимо тчото пошло не так.
3. так над
Все убивается

KGB, bearman, а можно по-подробнее? Что могло пойти не так? Ведь код самый простой.

KB
На сайте с 10.08.2006
Offline
164
KGB
#7
Master812:
KGB, bearman, а можно по-подробнее? Что могло пойти не так? Ведь код самый простой.

А фиг его. Вы попробуйте ради прикола

<?php

$per1=0;

unset($per1);

$per2=!isset($per1);

echo $per2;

?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий