Автор Тема: Устное и практическое решение  (Прочитано 7732 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« : 04 Сентября 2004, 16:53:20 »
Есть скрипт:

$i=0;

echo "ДО * $i
";

if ( $i == \'Блин\' ) {
    echo \'

Вы этого не должны видеть, Блин!!!

\';
    $i = \'Блин\';
}

echo "ПОСЛЕ * $i
";


Вопрос:
Чему равняется переменная $i в конце при выводе?
Решите его устно и практически.

Оффлайн Slastik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 101
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sproekt.kiev.ua
Устное и практическое решение
« Ответ #1 : 04 Сентября 2004, 18:51:35 »
:) Чудная штука.

Я не верил что будет \'Блин\'
FAQ OFF =)

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Устное и практическое решение
« Ответ #2 : 04 Сентября 2004, 19:05:00 »
Alex_Koval
Что за дела? :(

Slastik
Почитай на досуге раздел мануала "Type Juggling".
Мне тормоз послужил толчком...

Оффлайн Slastik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 101
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sproekt.kiev.ua
Устное и практическое решение
« Ответ #3 : 04 Сентября 2004, 19:29:35 »
Neter

Почитал. у меня сегодня как раз целый день досуга.

Просто выглядит прикольно. Такого сочитания не встречал.

Хотя форум довольно строгий, так что пост наверное выглядит неуместно.
FAQ OFF =)

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« Ответ #4 : 05 Сентября 2004, 02:00:43 »
Даю выписку из Вашего "Type Juggling":
Для целых чисел 0 (ноль) вычисляеться как False, а любое ненулевое целое значение как True. Анологично действительное значение 0,0 (или такие его эквиваленты 0,000) вычисляются как False, а ненулевые значения вычисляются как True. Что касаеться строк, то пустая строка вычисляеться как False, она представляеться парой кавычек между которыми ничего нет. Все непустые строки вычисляються как True.

В даном случае мы получаем True.
Поставте в начале $i=1;
А еще сравнение сделайте if ( $i == \'1\' )
Вот Вам integer и string
Поэксперементируйте с вариантами $i= "0"; TRUE; FALSE;

Я соглашусь со всем, но то что 0 дает ИСТИНУ НИКОГДА

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Устное и практическое решение
« Ответ #5 : 05 Сентября 2004, 13:53:27 »
Я не понимаю, что ты хочешь доказать?  Код работает правильно, ошибка в тебе :) Где у тебя "ноль даёт истину"?

В твоём примере ты сравниваешь значения числовой и строчной переменных, поэтому РНР автоматически переводит строку в число, напиши: var_dump(intval("Блин")) что получилось? Тоесть для интерпритатора это то-же самое как если бы ты написал:  if(0==0) Результатом этой логической операции будет - TRUE. Если ты хочешь сравнивать не только значения переменных, но и их тип, используй оператор "===".
Мне тормоз послужил толчком...

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« Ответ #6 : 06 Сентября 2004, 15:21:51 »
Спасибо за ответ, приблизительно понятно.
Но возникли опять вопросы.
Всегда ли строка переводится в число или в зависимости что идет первым и если поставить
if (\'Блин\' == $i )
то перевод переменной $i произойдет из числа в строку?

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« Ответ #7 : 06 Сентября 2004, 17:12:34 »
Спасибо еще раз, эксперементальным путем опредилил что всегда в число.
Тогда обьясните что происходит если $i=TRUE; и $i=FALSE;
при этом вторая часть неважно какая \'Блин\' только не 0 или \'0\'.
Здеси получается все наоборот.
При таких значениях  получается что игнорируется ==
И если TRUE то условие выполняется, и если FALSE то нет.
При сравнении с нулем в строке или числом условие опять нарушается.
Какой принцип выполнения такого условия.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Устное и практическое решение
« Ответ #8 : 06 Сентября 2004, 20:24:33 »
Вобщем-то нет разницы между, if(TRUE=="0") и if (0), тоесть важно понять, что заключённое в скобки выражение проверяется на истинность и все логические операторы возвращают либо ИСТИНА либо ЛОЖЬ. FALSE - это когда переменная пуста или равна нулю.
TRUE - соответственно не пустая, отличная от нуля переменная.

Поэксперементируй, посмотри как оно работает:echo (TRUE=="0") ? "TRUE" "FALSE";
Да и скачай нормальный английский мануал с php.net и прочитай весь второй раздел, Language Reference, если будешь вдумчиво читать вопросов больше не возникнет.
Мне тормоз послужил толчком...

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Устное и практическое решение
« Ответ #9 : 06 Сентября 2004, 20:59:14 »
Я эту проблему с переводом понемаю немного подругому.
Например в Delphi есть функция StrToInt тоесть, переводит строку в тип integer или real, причём нужно чтобы строка включала только цифры, а если сроку нельзя перевести в integer или real из-за содержания в ней букв или других символов, возвращaется 0 (False). Также как и в PHP.
Не все является тем чем кажется.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Устное и практическое решение
« Ответ #10 : 06 Сентября 2004, 21:26:34 »
Kneaz
Какую проблему? Причём здесть Дельфи?
Ромик, грохни его пост, он сбивает неокрепшие умы :)
Мне тормоз послужил толчком...

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« Ответ #11 : 07 Сентября 2004, 17:19:48 »
Neter
Большое спасибо за помощь, она не сравнится ни с одним мануалом.
Если учесть что 90% програмистов интернет самоучки, то Вы приносите большую пользу в изучении ПХП.

Да, и если можно еще вопрос:
В вашем условии где TRUE=="0", то есть что то не может равняться нулю и мы получаем FALSE, здесь все понятно.

Как быть с таким условием.
echo (TRUE=="текст") ? "TRUE" "FALSE";
Почему же здесь получается TRUE?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://

Оффлайн Alex_Koval

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polyakova.com.ua
Устное и практическое решение
« Ответ #13 : 07 Сентября 2004, 19:35:19 »
Вот это крутой ответ, спасибо RomikChef.
Вопросов больше нет, одни благодарности.

Ничего себе новичок на 4126 сообщения.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28