вторник, 11 ноября 2008 г.

О дальнейшем постинге

По сути основы изучены.
Осталось разобраться с локальными переменными. Фактически они все в PHP локальные. То есть глобальные можно ввести, но как-то мутно.
Встроенные функции php удобно даны в документации на оффициальном сайте php.net
Кроме того, письменное фиксирование каждого прочитанного абзаца сильно снижает скорость изучения. Поэтому частота и количество постов должн
ы неизбежно уменьшиться.

Определение функций в PHP

Функции должны быть определены перед их использованием. Т.е. сначала идет определение функции и только в последующих строках её можно вызывать в скрипте.
Общий синтаксис таков

function MyFunction(arg1=value1, ... , argN=valueN)
{
operators;
};

Если функация не должны иметь аргументов, то круглые скобки после её имени оставляются пустыми.
Инструкция return
возвращает результат действия функции.
Пример

function mySqrt($x)
{
return $n*$n;
}
$value=mySqrt(4);
echo $value; //выведет 16
echo MYSqrt(10); //выведет 100

Параметры функции, которые могут быть опущены, должны всегда располагаться справа.

int func_num_args() - возвращает общее число аргументов, переданных функции при вызове
mixed func_get_arg(int $num) - возвращает значение аргумента с номером $num
list func_get_args() - возвращает список всех аргументов, указанных при вызове функции
Пример
//Переменное число параметров функции

<?php
function MyEcho()
{
for ($i=0; $i<func_num_args(); $i++)
{
echo func_get_arg($i)."<br />\n";
}
}
myecho("Меркурий", "Венера", "Земля", "Марс");
?>

Или проще

<?php
function myecho()
{
foreach (func_get_args() as $v)
{
echo "$v <br />\n";
}
}
myecho("Меркурий", "Венера", "Земля", "Марс");
?>

понедельник, 10 ноября 2008 г.

Сериализация: упаковка/распаковка

Сериализацией называется процесс упаковки/распаковки переменных в строку/из строки.
Упаковка:
string serialize(mixed $obj);
Распаковка
mixed unserialize(string $str);

Разбиение и слияние строк: explode() и implode()

explode() разбивает строку $str по подстроке $substr с возможностью указания предельного количества блоков разбиения $lim (наличие подстроки в последнем блоке игнорируется).
Имеет синтаксис
list explode(string $substr; string $str [, int $lim]);
Таким образом функция explode() возвращает список, состоящий из блоков количеством не более $lim
Функции implode() и её синоним join() производят обратную операцию - склейку блоков из списка $list при помощи заданной подстроки $substr и имеют синтаксис
string implode(string $substr; list $list);
string join(string $substr; list $list);

воскресенье, 9 ноября 2008 г.

Перебор массивов

Перебирать ассоциативные массивы можно с помощью функций reset() и next() для прямого перебора или end() и prev() - для обратного перебора.
for (reset($massiv); $k=key($massiv); next($massiv))
reset() - возвращает значение первого элемента массива
next() - возвращает значение элемента следующего за текущим
end() - возвращает значение последнего элемента массива
prev() - возвращает значение элемента пердшествующего текущему

Прямой метод перебора
foreach($massiv as $k=>$v)

Слияние массивов

Пусть у нас имеется два ассоциативны массива (!не нумерованных массива-списка!) $a и $b.
Тогда для их слияния используем операцию
$c=$a+$b;
Это действие некоммутативно, т.е. $a+$b не равно $b+$a
Для массивов-списков с цифровой нумерацией (индексацией) эта операция неприменима, т.к. оба списка неизбежно содержат элементы с одинаковыми индексами, которые не могут быть ни заменены, ни сложены с помощью этой операции. Новый массив в этом случае будет содержать элементы первого слагаемого для пересекающихся индексов. Впрочем и для ассоциативных массивов с нецифровой индексацией справедливо то же, если названия некоторых элементов совпадают - на этих местах останутся элементы первого слагаемого.
Слияние массивов с обновлением элементов массива может быть произведено с помощью функции array_merge()
$c=array_merge($a,$b);
либо можно воспользоваться оператором цикла foreach()
foreach($b as $i=>$v) $a[$i]=$v;

Функция count()

озвращает количество элементов массива.
В качестве её аргумента могут выступать также объекты и обычные переменные (значение count() для них всегда 1, как для массивов, состоящих из одного элемента).
Синтаксис
$n=count($massiv);