Не надо вообще смешивать понятия литерала и типа.
Тип данных - это понятие, определяющее, как будет обработан тот или иной объект; любые данные строкового типа будут обрабатываться как строки, будь то литерал, переменная, константа, результат, возвращаемый функцией и т. д. В языках со строгой типизацией (C/C++, Pascal, etc.) каждая переменная имеет определённый тип и не может хранить значения другого типа; в PHP и JavaScript тип переменной может меняться и определяется типом значения, которое в ней содержится.
Литерал - это константное выражение соответствующего типа: число (численный литерал), строка в кавычках (строковый литерал) и т. п. Я бы назвал литералом массива выражение типа array(1, 2, 3), но я нигде не встречал подобной терминологии и, возможно, я не прав.
31. Furax - 16 Марта, 2008 - 08:43:18 - перейти к сообщению
32. Systemnik - 16 Марта, 2008 - 08:45:40 - перейти к сообщению
Так еще раз:
1) Все что засунуто в кавычки является строковым или численным литералом.
так?
Код
полностью равен коду:
??
строквый тип это - переменная литерал итд тоесть все что отночится к данным?
а зачем строковый тип превращать в строковый литерал?
1) Все что засунуто в кавычки является строковым или численным литералом.
так?
Код
CODE:
$sin = sin(0.3); //Обрати внимание: переменная $sin - числового типа!
$str = "$sin"; //$str - уже строка
if (strpos($str, '7') !== FALSE)
echo 'Есть семёрка!';
else
echo 'Нету...';
$sin = sin(0.3); //Обрати внимание: переменная $sin - числового типа!
$str = "$sin"; //$str - уже строка
if (strpos($str, '7') !== FALSE)
echo 'Есть семёрка!';
else
echo 'Нету...';
полностью равен коду:
CODE:
$sin = sin(0.3); //Обрати внимание: переменная $sin - числового типа!
if (strpos("$sin", '7') !== FALSE)
echo 'Есть семёрка!';
else
echo 'Нету...';
if (strpos("$sin", '7') !== FALSE)
echo 'Есть семёрка!';
else
echo 'Нету...';
??
строквый тип это - переменная литерал итд тоесть все что отночится к данным?
а зачем строковый тип превращать в строковый литерал?
33. Systemnik - 16 Марта, 2008 - 08:54:03 - перейти к сообщению
Так
CODE:
$a = 2; // строковый тип и численный литерал? тесть число в литерал превращать кавычками ненадо? тк оно уже литерал?
34. Furax - 16 Марта, 2008 - 08:54:08 - перейти к сообщению
Systemnik
Кавычки - признак символьного литерала! Числовой пишется без кавычек.
Да, код эквивалентен. Во втором случае просто нет промежуточной переменной.
Кавычки - признак символьного литерала! Числовой пишется без кавычек.
Да, код эквивалентен. Во втором случае просто нет промежуточной переменной.
35. Systemnik - 16 Марта, 2008 - 08:55:03 - перейти к сообщению
Цитата:
Да, код эквивалентен. Во втором случае просто нет промежуточной переменной.
Значит тема понята
36. Furax - 16 Марта, 2008 - 08:55:18 - перейти к сообщению
$a=2 - здесь и 2, и $a имеют численный тип. 2 - это численный литерал, но $a литералом не является, она переменная!
37. Systemnik - 16 Марта, 2008 - 08:58:12 - перейти к сообщению
но остался один есдинственный вопрос
а зачем числовой тип превращать в строковый литерал?
А если я напишу
$a="2"; - $a станет литералом?
А почему вы написали
а не
?
а зачем числовой тип превращать в строковый литерал?
Цитата:
$a=2 - здесь и 2, и $a имеют численный тип. 2 - это численный литерал, но $a литералом не является, она переменная!
$a=2 - здесь и 2, и $a имеют численный тип. 2 - это численный литерал, но $a литералом не является, она переменная!
А если я напишу
$a="2"; - $a станет литералом?
А почему вы написали
CODE:
if (strpos($str, '7') !== FALSE)
а не
CODE:
if (strpos($str, 7) !== FALSE)
?
38. Ray Wen - 16 Марта, 2008 - 09:06:54 - перейти к сообщению
Systemnik
В PHP переменные не имеют четкого типа, переменную можно использовать по разному и по ходу привращать в строку, число, массив и т.д... В общем станет тем кем нужно...
В PHP переменные не имеют четкого типа, переменную можно использовать по разному и по ходу привращать в строку, число, массив и т.д... В общем станет тем кем нужно...
39. Systemnik - 16 Марта, 2008 - 09:12:12 - перейти к сообщению
несовсем понял можно попорядку сначало на первыйвопорс потом на второй тоесть в первом нет?
40. Furax - 16 Марта, 2008 - 09:20:39 - перейти к сообщению
CODE:
$a никогда не будет литералом, $a - это переменная, один из элементов, использующихся в языке: возвращаемых значений функций, переменных, констант, литералов и т. п.$a="2"; - $a станет литералом?
Я написал '7' только за тем, чтобы подчеркнуть, что второй аргумент функции strpos - строка, а не число. Если бы я написал 7 без кавычек, PHP за меня привёл бы второй аргумент (как, вообще говоря, и первый) к строковому типу, т. к. он знает, что аргументами strposа должны быть строки. Кавычки я ставил, чтобы это было видно человеку, а не машине.