Strict Standards: Resource ID#34 used as offset, casting to integer (34) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: PHP + MySQL [4]
ТвойWeb » WebMaster класс » PHP/Perl » PHP + MySQL

Страниц (6): « 1 2 3 [4] 5 6 »
 

31. Furax - 16 Марта, 2008 - 08:43:18 - перейти к сообщению
Не надо вообще смешивать понятия литерала и типа.

Тип данных - это понятие, определяющее, как будет обработан тот или иной объект; любые данные строкового типа будут обрабатываться как строки, будь то литерал, переменная, константа, результат, возвращаемый функцией и т. д. В языках со строгой типизацией (C/C++, Pascal, etc.) каждая переменная имеет определённый тип и не может хранить значения другого типа; в PHP и JavaScript тип переменной может меняться и определяется типом значения, которое в ней содержится.

Литерал - это константное выражение соответствующего типа: число (численный литерал), строка в кавычках (строковый литерал) и т. п. Я бы назвал литералом массива выражение типа array(1, 2, 3), но я нигде не встречал подобной терминологии и, возможно, я не прав.
32. Systemnik - 16 Марта, 2008 - 08:45:40 - перейти к сообщению
Так еще раз:

1) Все что засунуто в кавычки является строковым или численным литералом.
так?

Код
CODE:

$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 'Нету...';

??

строквый тип это - переменная литерал итд тоесть все что отночится к данным?
а зачем строковый тип превращать в строковый литерал?
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 - здесь и 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 переменные не имеют четкого типа, переменную можно использовать по разному и по ходу привращать в строку, число, массив и т.д... В общем станет тем кем нужно...
39. Systemnik - 16 Марта, 2008 - 09:12:12 - перейти к сообщению
несовсем понял можно попорядку сначало на первыйвопорс потом на второй тоесть в первом нет?
40. Furax - 16 Марта, 2008 - 09:20:39 - перейти к сообщению
CODE:
$a="2"; - $a станет литералом?
$a никогда не будет литералом, $a - это переменная, один из элементов, использующихся в языке: возвращаемых значений функций, переменных, констант, литералов и т. п.

Я написал '7' только за тем, чтобы подчеркнуть, что второй аргумент функции strpos - строка, а не число. Если бы я написал 7 без кавычек, PHP за меня привёл бы второй аргумент (как, вообще говоря, и первый) к строковому типу, т. к. он знает, что аргументами strposа должны быть строки. Кавычки я ставил, чтобы это было видно человеку, а не машине.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0285]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33