Замена переменных в строках
В PHP 4 добавлен новый механизм
замены переменных в строках. Вы имеете теперь, наконец, доступ к переменным-членам
объекта и элементам многомерных массивов внутри строк.
Для этого вы должны
заключить ваши переменные в фигурные скобки со знаком dollar сразу после открывающей
скобки: {$...} Брутальный
характер архитектуры
Для внедрения значения переменной-члена объекта
в строку вы просто записываете
"text {$obj->member} text", в
то время как в PHP 3 вы должны были использовать что-нибудь вроде "text ".$obj->member."
text". Под вычислительной
системой (ВС) будем понимать совокупность процессоров
Это должно дать
более читабельный код, но может нарушить работу существующих скриптов, написанных
для PHP 3. Вы можете легко проверить наличие проблем этого рода, найдя комбинации
символов {$ в вашем коде и заменив их на \{$ вашей любимой утилитой
search-and-replace.
swf_actionstop
swf_actiontogglequality swf_actionwaitforframe
swf_addbuttonrecord swf_addcolor
swf_closefile swf_definebitmap
swf_definefont swf_defineline
swf_definepoly swf_definerect
swf_definetext swf_endbutton
swf_enddoaction swf_endshape
swf_endsymbol swf_fontsize
swf_fontslant swf_fonttracking
swf_getbitmapinfo swf_getfontinfo
swf_getframe swf_labelframe
swf_lookat swf_modifyobject
swf_mulcolor swf_nextid
swf_oncondition swf_openfile
swf_ortho swf_ortho2
swf_perspective swf_placeobject
swf_polarview swf_popmatrix
swf_posround swf_pushmatrix
swf_removeobject swf_rotate
swf_scale swf_setfont
swf_setframe swf_shapearc
swf_shapecurveto swf_shapecurveto3
swf_shapefillbitmapclip swf_shapefillbitmaptile
swf_shapefilloff swf_shapefillsolid
swf_shapelinesolid swf_shapelineto
swf_shapemoveto swf_showframe
swf_startbutton swf_startdoaction
swf_startshape swf_startsymbol
swf_textwidth swf_translate
swf_viewport swfaction
swfbitmap swfbutton
swfbutton_keypress swfdisplayitem
swffill swffont swfgradient
swfmorph swfmovie
swfshape swfsprite
swftext swftextfield
sybase_affected_rowssybase_close
sybase_connect sybase_data_seek
sybase_fetch_array sybase_fetch_field
sybase_fetch_object sybase_fetch_row
sybase_field_seek sybase_free_result
sybase_get_last_message sybase_min_client_severity
sybase_min_error_severity sybase_min_message_severity
sybase_min_server_severity sybase_num_fields
sybase_num_rows sybase_pconnect
sybase_query sybase_result
sybase_select_db symlink
syslog system Основные
понятия и аксиомы динамики. Понятие о трении Иметь представление о массе тела
и ускорении свободного падения, о связи между силовыми и кинематическими параметрами
движения, о двух основных задачах динамики.switch
Оператор
switch напоминает выполнение серии операторов IF над одним выражением.
Во многих случаях вам нужно будет сравнить одну переменную (или выражение) с различными
значениями и выполнить разные участки кода в зависимости от того, каково значение.
Именно это поможет сделать оператор switch. Успенский
собор во Владимире В новой постройке ожили традиции древнерусской архитектуры.
И всё же геомегрически четкие линии сооружения, светлый интерьер, который можно
охватить одним взглядом, а также другие детали конструкции здания ясно говорили
о том, что его строил итальянец, воспитанный на лучших образцах искусства европейского
Возрождения.
Следующие два примера это два способа записи одного и того
же: в первом используется серия операторов if, во втором - оператор switch:
if ($i == 0) { print "i equals 0"; } if ($i == 1) { print "i equals
1"; } if ($i == 2) { print "i equals 2"; } switch ($i) { case 0: print "i equals
0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break;
} |
Важно понять, как выполняется оператор switch,
чтобы исключить ошибки. Оператор switch выполняется построчно (фактически
- оператор за оператором). В начале никакой код не выполняется. Только когда будет
найден оператор case со значением, совпадающим со значением выражения
switch, PHP начнёт выполнять операторы. PHP продолжает выполнение операторов
до конца блока switch или до первого оператора break. Если вы
не запишете операторы break в конце оператора case в списке, PHP будет
выполнять операторы следующего case. Например:
switch ($i) { case 0: print "i equals 0"; case 1: print "i equals
1"; case 2: print "i equals 2"; } |
Здесь, если $i равно
0, PHP выполнит все операторы print! Если $i равно 1, PHP выполнит последние два
оператора print, и только если $i равно 2, вы получите 'ожидаемое' поведение,
и будет выведено только 'i equals 2'. Итак, важно не забывать записывать операторы
break (хотя это может и не понадобиться при некоторых обстоятельствах).
В
операторе switch условие вычисляется только один раз, а результат сравнивается
с каждым оператором case. В операторе elseif условие вычисляется
повторно. Если ваше условие сложнее, чем простое сравнение "и/или" в небольшом
цикле, оператор switch может сработать быстрее.
Список операторов
в case может также быть пустым, что просто передаёт управление в список операторов
следующего case.
switch ($i) { case 0: case 1: case 2: print "i is less than 3 but not
negative"; break; case 3: print "i is 3"; } |
Особый
случай - default case (case по умолчанию). Этот case совпадёт со всем, с чем не
совпали все предыдущие case, и должен быть самым последним case. Например:
switch ($i) { case 0: print "i equals 0"; break; case 1: print
"i equals 1"; break; case 2: print "i equals 2"; break; default: print "i is not
equal to 0, 1 or 2"; } |
Выражением case может
быть любое выражение, которое вычисляется в простой тип, то есть целое число,
число с плавающей точкой или строка. Массивы или объекты не могут использоваться
здесь, если только они не разыменовываются в простой тип.
tan tanh tempnam
textdomain time tmpfile
touch trigger_error
trim Массивы
Массив в PHP это упорядоченная
карта. Карта/map это тип, который отображает значения в ключи. Этот
тип оптимизируется разными способами, поэтому вы можете использовать его как реальный
массив или список (вектор), хэш-таблицу (которая является реализацией карты),
словарь/dictionary, коллекцию/collection, стэк/stack, очередь/queue и, возможно,
что-то ещё. Поскольку вы можете иметь другой PHP-массив в качестве значения, вы
можете также довольно легко симулировать деревья/trees.
Объяснение этих
структур выходит за рамки данного учебника, но вы можете найти как минимум по
одному примеру для каждой этой структуры. За дополнительной информацией об этих
структурах мы отсылаем вас к литературе по этой обширной теме.
Массив может быть создан конструкцией языка
array(). Она принимает определённое количество разделённых запятыми пар
key => value (ключ-значение).
key
это либо integer, либо string. Если ключ это стандартное представление
integer, он будет интерпретироваться как таковой (т.е. "8" будет
интерпретироваться как 8, а "08" будет интерпретироваться как
"08").
Значение может быть любым.
Если вы опускаете ключ,
берётся максимальный целочисленный индекс, а новый key будет равен этому максимуму
+ 1. Поскольку целые числа могут быть отрицательными, это верно также и в отношении
отрицательных индексов. Если, например наивысший индекс -6, это даст
в результате для нового ключа -5. Если ещё нет ни одного целочисленного
индекса, key будет 0 (нуль). Если вы специфицируете ключ, который уже
имеет присвоенное значение, это значение будет перезаписано.
Использование
true в качестве ключа будет вычисляться в integer 1 в
качестве ключа. Использование false в качестве ключа будет вычисляться
в integer 0 в качестве ключа. Использование NULL в качестве
ключа будет вычисляться в пустую строку. Использование пустой строки в качестве
ключа создаст (или перезапишет) ключ пустой строкой в качестве значения, это не
то же самое, что использование пустых угловых скобок.
Вы не можете использовать
массивы с объектами в качестве ключей. Если это сделать, появится предупреждение:
Illegal offset type.
Вы также можете модифицировать
существующий массив, явно установив значения.
Это делается путём присвоения
значений массиву через специфицирование key в квадратных скобках. Вы можете также
опустить key, добавив пустую пару угловых скобок ("[]") паре имя-значение.
Если
массив $arr ещё не существует, он будет создан. Итак, это альтернативный
способ специфицирования массива. Для изменения конкретного значения просто присвойте
ему новое значение. Если вы хотите удалить пару key/value, вы должны её unset().
Имеется
достаточное количество функций для работы с массивами, см. раздел Функции массивов.
Примечание: функция unset() позволяет отменить установку ключа
массива. Не забудьте, что при этом массив НЕ реиндексируется.
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
unset( $a[2] ); /* даст массив, который определён как $a = array( 1=>'one',
3=>'three'); а НЕ как $a = array( 1 => 'one', 2 => 'three'); */ |
Структура управления foreach существует специально для
массивов. Она даёт возможность без усилий просматривать массив