Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Арифметические действия с неопределённой переменной
 
 автор: STEVER   (29.02.2008 в 16:27)   письмо автору
 
 

Почему при неопеределенной переменой $i
в случае

$i++;
echo $i;

мы получаем 1
а так

$i--;
echo $i;

NULL

В чем причина???

   
 
 автор: mihdan   (29.02.2008 в 16:33)   письмо автору
 
   для: STEVER   (29.02.2008 в 16:27)
 

как можно отнять из ничего? переменная изначально не определена


<?
$i
--;
echo 
$i;
?>

   
 
 автор: STEVER   (03.03.2008 в 10:42)   письмо автору
 
   для: mihdan   (29.02.2008 в 16:33)
 

А как можно прибавить к ничему? А получается в итоге 1.

Это не ответ, мне инстересует конкретная структурная особенность языка, благодаря которой происходит именно так.

   
 
 автор: STEVER   (04.03.2008 в 11:53)   письмо автору
 
   для: STEVER   (03.03.2008 в 10:42)
 

Мне интересно: тут есть толковые люди, которые способны ответить на вопрос?
Раньше, на сколько я знаю, - были.
А сейчас форум заполняется вопросами а-ля "мне влом открыть книгу, киньте мне готовый код, чтобы я его вставил без изменений и все работало".
В данном случае, я не нашел ответа в книгах.
Копаться в структуре самому довольно тяжело.
Вот я и хотел чтобы более опытные коллеги подсказали в данном вопросе.

   
 
 автор: mihdan   (04.03.2008 в 11:56)   письмо автору
 
   для: STEVER   (03.03.2008 в 10:42)
 

Если переменная не определена, то соответственно ее значение - NULL, NULL + 1 = 1 - разве так не ясно?

   
 
 автор: Киналь   (04.03.2008 в 12:14)   письмо автору
 
   для: mihdan   (04.03.2008 в 11:56)
 

NULL не есть ноль. И как раз особенность языка в том, что он в данном случае NULL заменяет нулем. РНР вообще много чего прощает разработчику)

   
 
 автор: STEVER   (04.03.2008 в 12:35)   письмо автору
 
   для: mihdan   (04.03.2008 в 11:56)
 

mihdan,
Почему тогда по твоей же логике не получается
0 - 1 = -1

ведь реально выводит NULL после поперации $i--

   
 
 автор: olejek   (04.03.2008 в 13:02)   письмо автору
 
   для: STEVER   (04.03.2008 в 12:35)
 

Говорите, что читали мануалы?!

Note: The increment/decrement operators do not affect boolean values. Decrementing NULL values has no effect too, but incrementing them results in 1.

   
 
 автор: STEVER   (04.03.2008 в 13:15)   письмо автору
 
   для: olejek   (04.03.2008 в 13:02)
 

olejek ,
прошу прощения, но вы меня не поняли.
я не спрашиваю есть ли ответ задачи в мануалах.
меня интресует решение задачи.
Как один из вариантов решения: разработчикам пхп вбрело в голову сделать так. но он меня не устроит) иначе я задам вопрос почему именно так почему им не сделать -1 ?

   
 
 автор: olejek   (04.03.2008 в 13:23)   письмо автору
 
   для: STEVER   (04.03.2008 в 13:15)
 

Делайте так:
$i = $i - 1;

А если это не устраивает, идите в раздел "Задачи на php".

P.S. Вы же написали, что не нашли ответа в книгах - где Вы видели, чтобы в учебниках разбирали внутреннее устройство языка?

   
 
 автор: STEVER   (04.03.2008 в 13:29)   письмо автору
 
   для: olejek   (04.03.2008 в 13:23)
 

в некоторых направленых на разборы уязвимостей такое имеется.
"$i = $i - 1; " - моя цель понять структурные различия инк и дек а не сделать неопределенную переменную на один меньше.
а на счет перенести в Задачи, благодарю за идею, я сразу не подумал.

   
 
 автор: Киналь   (04.03.2008 в 14:24)   письмо автору
 
   для: STEVER   (04.03.2008 в 13:29)
 

STEVER, по-моему, вы слишком многого хотите от РНР) Это скриптовый язык, не очень красивый и не очень логичный. Он делался для создания "хомячков", то есть для использования пррограммистами средней руки, не заморачивающимися на глубокие семантические различия инкремента и декремента и прочие тонкости. Работает - вот и хорошо)

   
 
 автор: STEVER   (04.03.2008 в 15:07)   письмо автору
 
   для: Киналь   (04.03.2008 в 14:24)
 

ну так уж сложилось что именнно с пхп связана моя работа, поэтому и задался вопросом на уровне разработчиков. может их на форум позвать? ))

   
 
 автор: mihdan   (04.03.2008 в 14:40)   письмо автору
 
   для: STEVER   (04.03.2008 в 12:35)
 

Согласен с вами ))))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования