Forum Webscript.Ru

Программирование => PHP => Тема начата: Vladimir от 29 Августа 2002, 10:12:38

Название: Помогите!
Отправлено: Vladimir от 29 Августа 2002, 10:12:38
Написал такой код:
$a = 1;
$c = "1";
$rez1 = $a + $c;
$rez2 = $c + $a;
echo"$rez1
$rez2";
?>
По всем правилам на экран должно вывести:
2 и 11
А у меня оба результата равняются 2 и обе переменные string :-/
В чем может проблема? Может глюкавая версия PHP?
Название: Помогите!
Отправлено: Stek от 29 Августа 2002, 10:31:03
$rez2 = $c.$a;

а + предназначен именно для складывания, что пхп и делает.

Вот этот раздел (http://www.php.net/manual/en/language.operators.php)  тебе думаю будет сильно интересен
Название: Помогите!
Отправлено: Доктор от 29 Августа 2002, 15:09:45
Цитировать
А у меня оба результата равняются 2 и обе переменные string :-/

Обе переменные integer...
Название: Помогите!
Отправлено: Maniac от 29 Августа 2002, 16:49:01
PHP автоматически конвертирует строки в числа и наоборот
Название: Помогите!
Отправлено: Доктор от 29 Августа 2002, 23:16:22
Maniac
Ну и что? В данном примере обе переменные integer...
Название: Помогите!
Отправлено: Maniac от 30 Августа 2002, 14:53:31
Цитировать
В данном примере обе переменные integer...

Да ну? А ты сделай print gettype() и узнаешь, какого они типа.
В данном примере переменная $a - типа integer, $c - типа string, но при сложении интерпретатор преобразовал $c в строку.
А если бы он не складывал, а делал конкатенацию, то $a было бы преобразовано в string
Название: Помогите!
Отправлено: Меняздесьдавнонет от 30 Августа 2002, 15:07:54
Маньяк, зачем ты это написал?
Кому это надо?
Доктор все правильно объяснил.
А ты сам невнимательно читаешь, в словах путаешься и еще споришь.
Тут тебе даже отвечать нечего - потому, что все давно отвечено, а ты просто невнимательно прочел.

Ну не люблю я вот когда простые и четкие ответы потом замыливаются вот такими "обсуждениями" на пустом месте.
По хорошему тут стереть надо все, начиная с четвертого постинга в этой теме.
Название: Помогите!
Отправлено: Maniac от 30 Августа 2002, 15:10:50
RomikChef
Если бы мне нужен был анализ моего постинга, я бы попросил.
А Доктор допустил ошибку, ткнул меня в неё носом, я ему (здесь же) показал где он не прав.
Название: Помогите!
Отправлено: Меняздесьдавнонет от 30 Августа 2002, 15:14:29
:-))))))))))))))))
Маньяк!
Я тебя обожаю :-)))))
Я ДАВНО так не смеялся!!!!
"Доктор опустил ошибку и ткнул меня в нее носом" :-)))))))
слушай, ты хоть в одном постинге можешь написать без смысловых ошибок? :-))))

про ошибки, кторых нет, я уже молчу :-)))
Сил нету :-))))
Название: Помогите!
Отправлено: Maniac от 30 Августа 2002, 15:26:32
Смешливый ты наш.
Цитировать
опустил ошибку

допустил.

Цитировать
кторых нет я уже молчу

Вот и молчи. Почитай орфографический словарик русского языка, а также что-нибудь по теории программирования (там популярно написано про типы и их неявное преобразование)
Название: Помогите!
Отправлено: Дмитрий Попов от 30 Августа 2002, 15:30:22
RomikChef
Не достало?
Название: Помогите!
Отправлено: Меняздесьдавнонет от 30 Августа 2002, 15:38:35
Маньяк, чтобы ты дальше не тупил, я позволю себе показать твои ошибки :-)
Цитировать
А у меня оба результата равняются 2 и обе переменные string :-/
Обе переменные integer...

То есть, речь идет о последних двух переменных, а и с тут не при чем.
уж не знаю, зачем ты прицепился к этим а и с, отвечая доктору - ведь он-то имел в виду рес1 и рес2!

Дальше. КОНЕЧНО ЖЕ, эти переменные (рес1 и рес2 )будут иметь тип интеджер. Я не собираюсь даже проверять это.
Так что, на этом можно спор и закончить.
Цитировать
$c - типа string, но при сложении интерпретатор преобразовал $c в строку.

Вот этот пассаж непонятен абсолютно. Нет, то, что ты опечатался, и написал строка вместо int - это понятно. Непонятно - к чему?
То ли ты считаешь, что при участии в выражении, переменная необратимо меняется, то ли хочешь сказать, что из-за того, что переменная $c нынче integer, то пееменные рес1 и рес2 - стринг...

В общем, перечитал я твое сообщение, 4 сверху, и понял, что оно могло не относиться к словам Доктора. Но тогда ты бы так и объяснил, а не стал спорить.
Название: Помогите!
Отправлено: Maniac от 30 Августа 2002, 15:46:04
Цитировать
$c - типа string, но при сложении интерпретатор преобразовал $c в строку

Это была опечатка. Я имел в виду "в число".
Далее... Мой постинг ДЕЙСТВИТЕЛЬНО относился к автору топика.
Цитировать
бы так и объяснил, а не стал спорить

Ты не спрашивал.
В общем, проехали. ИМХО, автор топика сюда уже и не заглядывает :)
Название: Помогите!
Отправлено: Меняздесьдавнонет от 30 Августа 2002, 15:51:02
Maniac
Беда в том, что теории программирования тут не при чем. Чуточку здравого смысла и банальной внимательности.
Название: Помогите!
Отправлено: Maniac от 30 Августа 2002, 15:53:17
Цитировать
теории программирования тут не при чем. Чуточку здравого смысла и банальной внимательности

Согласен
Название: Помогите!
Отправлено: Доктор от 30 Августа 2002, 19:45:49
Я, действительно, принял 4-е сообщение в теме за ответ мне (иначе непонятно, зачем оно было надо), и поэтому сам на него ответил.
Замяли...