Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 20:23   #11
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

У некоторых авторов бывает своя терминология, а вообще "интерполяция" в программировании, по-моему, не исп. общепринято в таком значении. Это в вычислительной математике используется и имеет другой смысл.
motorway вне форума Ответить с цитированием
Старый 26.01.2010, 11:48   #12
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Сообщение от akokin Посмотреть сообщение
что вы только что интерполировали переменную $a
Да вы что, я ничего такого не делал!
Настоятельно рекомендую не применять математический термин "интерполяция" в данном случае. Программисты, как правило, неплохо знают математику и термин "интерполяция" у них ассоциируется со сложными вычислениями разнообразными методами, которые они мучительно учили. Что кстати и выше написали.

PHP код:
"$a
''
.$a
$a
=(string)$a 
во всех 3х вариантах происходит одно и то же - приведение переменной $a к типу string. Присходит оно как я уже говорил по строго определённым правилам, в то время как интерполяция это вычисление с погрешностью.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 26.01.2010, 12:02   #13
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
При сравнении переменные приводяться к одному типу по строго опредёленным правилам и никакой интерполяции там нет и быть не может!
Спасибо. А вы не можете привести, где с этими правилами можно ознакомиться? Боюсь, что у меня путаница образовалась в голове...
akokin вне форума Ответить с цитированием
Старый 26.01.2010, 16:35   #14
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Сообщение от akokin Посмотреть сообщение
А вы не можете привести, где с этими правилами можно ознакомиться?
Где не знаю, у Флёнова есть немного, но быстрее будет сдлеать так.

"Экспресс курс: приведение типов в PHP".

1)Приведение типов при математических операциях.
PHP код:
$obj=new DateTime;
echo 
3.2 12 true 'adfshg67''3.5h''10sd2''' $obj
Код:
30.7
При математических опрециях все переменные приводяться к типу integer или float, если среди переменных есть нецелые числа.
Разбираем наше выражение:
3.2 + 12 = 15.2 - тут все понятно
15.2 + true = 16.2 - true приводиться к 1, false к 0
16.2 + 'adfshg67' = 16.2 - первый символ в строке не является числовым значить строка приводиться к 0
16.2 + '3.5h' = 19.7 - сторока '3.5h' приводиться к числу 3.5 тк оно присутствует в строке до нечисловых символов
19.7 + '10sd2' = 29.7 - аналогично предыдущему только число целое
29.7 + '' = 29.7 - пустая строка приводиться к 0
29.7 + $obj = 30.7 - складывать обьект с числом это страшное безобразие, но интерпритатор php относиться к этому так - раз обьект есть значит = 1

2)Приведение типов при строковых операциях.
PHP код:
class Test{
    public function 
__toString(){
        return 
'I am ojbect test';
    }
}
$obj=new Test;
$a=true;
$b=true;
$c=3.2;
echo 
$c.' | '."hello $a ".$b.' | '.false.' | '.$obj
Код:
3.2 | hello 1 1 | | I am ojbect test
При строковых опрециях все переменные приводяться к типу string.
$c.' | ' - integer приводятся к типу string "как есть", для float при большом количестве знаков после запятой может появиться "е" в зависимости от настроек сервера
"hello $a ".$b.' | ' - все что в php идёт в двойных кавычках, парситься на предмет наличия переменных, если они находяться то подставляется значение переменной. В транскрипт коде варианты написания равны абсолютно " = $res" === ' = '.$res . Булевые значения true заменяются на 1.
false.' | ' - false заменятся на пустую строку ''
' | '.$obj - у большинства обьектов в php есть метод __toString которые реагирует на попыку работать с обьектом как со строкой, если он есть то мы получаем результат его работы в противном случае ошибку.

3)Операции сравнения
Если необходимо чтобы php не приводил типы переменных, а проводил сравнение с учётом типа переменных используем операторы === и !==.
Как было ранее сказано, тип переменной находящейся справа от знака сравнения, приводиться в типу переменной слева.
PHP код:
class Test{
    public function 
__toString(){
        return 
'str';
    }
}
$obj=new Test;
//приведени к числу
if(=='5rrr') echo 'yes';
if(
== true) echo 'yes';
if(
== false) echo 'yes';
if(
== $obj) echo 'yes';
//приведение к строке
if('5' == 5) echo 'yes';
if(
'' == false) echo 'yes';
if(
'1' == true) echo 'yes';
if(
'str' == $obj) echo 'yes'
Как видно правила описанные выше работают и тут.

Всё понятно обьяснил? За вами пиво .
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
операция SHL Anohorett Общие вопросы C/C++ 2 02.12.2009 23:27
разъяснение кода БД Ежедневника на Delphi TaYgA Помощь студентам 1 19.10.2009 17:33
Операция в Газе Роман Радер Свободное общение 2 31.12.2008 17:03
структура моей бд. Нужно разъяснение. Roof Microsoft Office Access 1 27.12.2008 18:23
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38