Справочник по PHP - white cat
Шрифт:
Интервал:
Закладка:
Пример использования array_diff_uassoc():
<?php
$a = array_fill(5, 6, 'banana');
print_r($a);
?>
Пример выведет следующее:
Array( [5] => banana [6] => banana [7] => banana [8] => banana [9] => banana [10] => banana)
Функция поддерживается PHP 4 >= 4.2.0, PHP 5
array_filter
Функция применяет фильтр к массиву, используя пользовательскую функцию.
Синтаксис:
array array_filter(array input [, callback callback])
Функция array_filter() возвращает массив, который содержит значения, имеющиеся в массиве input отфильтрованные в соответсвтии с результатами работы пользовательской функции callback.
В случае, если исходный массив input является ассоциативным массивом, в результирующем массиве индексы сохраняются.
Пример использования функции array_filter():
<?php
function odd($var) {
return ($var % 2 == 1);
}
function even($var) {
return ($var % 2 == 0);
}
$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array (6, 7, 8, 9, 10, 11, 12);
echo "Нечетные :n";
print_r(array_filter($array1, "odd"));
echo "Четные :n";
print_r(array_filter($array2, "even"));
?>
Пример выведет следующее:
Нечетные :Array( [a] => 1 [c] => 3 [e] => 5)Четные :Array( [0] => 6 [2] => 8 [4] => 10 [6] => 12)
Стоит отметить, что вместо имени фильтрующей функции можно указать массив, который содержит ссылку на объект и имя метода.
Также стоит отметить, что при обработке массива фукцией array_filter() его нельзя изменять: добавлять, удалять элементы или обнулять массив, т.к. это может привести к некоррекстной работе функции.
Функция поддерживается PHP 4 >= 4.0.6, PHP 5
array_map
Применение пользовательской функции ко всем элементам указанных массивов.
Синтаксис:
array array_map(mixed callback, array arr1 [, array ...])
Функция array_map() возвращает массив, который содержит элементы всех указанных массивов после обработки пользовательской функцией callback.
Количество параметров, передаваемых пользовательской функции, должно совпадать с количеством массивов, переданных функции array_map().
Пример испольльзования функции array_map(): Обработка одного массива
<?php
function cube($n) {
return $n*$n*$n;
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
Приведенный пример выведет следующее:
Array( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125)
Пример испольльзования функции array_map(): Обработка нескольких массивов
<?php
function show_Spanish($n, $m) {
return "Число $n по-испански - $m";
}
function map_Spanish($n, $m) {
return array ($n => $m);
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("show_Spanish", $a, $b);
print_r($c);
$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>
Приведенный пример выведет следующее:
// printout of $cArray( [0] => Число 1 по-испански - uno [1] => Число 2 по-испански - dos [2] => Число 3 по-испански - tres [3] => Число 4 по-испански - cuatro [4] => Число 5 по-испански - cinco)// printout of $dArray( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ))
Обычно функцию array_map() применяют к массивам, имеющим одинаковую размерность. Если массивы имеют разную длину, то меньшие из них дополняются элементами с пустыми значениями.
Следует отметить, что если вместо имени обрабатывающей функции задать null, то будет создан массив массивов.
Пример испольльзования функции array_map(): Создание массива массивов
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
Приведенный пример выведет следующее:
Array( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ))
Функция поддерживается PHP 4 >= 4.0.6, PHP 5
Переменные и массивы
list
Заносит элементы массива в переменные.
Синтаксис:
void list ( mixed ...)
Наподобие array(), функция list() не совсем функция, а языковая конструкция. Она используется для формирования списка переменных.
Замечание: list() работает только с цифровыми индексами массива и принимает ключи элементов начиная с 0.
Пример использования функции list():
<?php
$info = array("coffee", "brown", "caffeine");
// Выведем все переменные
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.n";
// Выведем первый и последний
list($drink, , $power) = $info;
echo "$drink has $power.n";
// Выведем только третий
list( , , $power) = $info;
echo "I need $power!n";
?>
Пример использования функции list():
<table>
<tr>
<th>Employee name</th>
<th>Salary</th>
</tr>
<?php
$result = mysql_query("SELECT id, name, salary FROM employees", $conn);
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
echo " <tr>n" .
" <td><a href="info.php?id=$id">$name</a></td>n" .
" <td>$salary</td>n" .
" </tr>n";
}
?>
</table>
Пример использования функции list(): Индексы
<?php
$info = array("coffee", "brown", "caffeine");
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee"}
Функция поддерживается PHP 3, PHP 4, PHP 5
compact
Упаковывает в массив переменные из текущего контекста.
Синтаксис:
array compact(mixed varname1 [, mixed $varname2, ...])
Функция compact() упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в varname1, $varname2 и т.д. При этом в массиве образуются пары с ключами, равными содержимому varnameN, и значениями соответствующих переменных.
Число аргументов может быть неопределенное.
Если в аргументе указано имя несуществующей переменной, он пропускается. Действие этой функции противоположно функции extract().
Пример использования функции compact():
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH"";
$location_vars = array("city", "state");
$result = compact("event", "nothing_here", $location_vars);
?>
В результате выполнения кода переменная $result имеет значение:
Array( [event] => SIGGRAPH [city] => San Francisco [state] => CA)
Почему же тогда параметры функции обозначены как mixed? Дело в том, что они могут быть не только строками, но и списками строк. В этом случае функция последнего перебирает все элементы этого списка, и упаковывает те переменные из текущего контекста, имена которых она встретила. Более того - эти списки могут, в свою очередь, также содержать списки строк, и т.д. Правда, последнее используется достаточно редко.
Пример использования функции compact():
<?php
$a="Test";
$b="Text";
$c="CCC";
$d="DDD";
$List=array("b",array("c","d"));
$A=compact("a",$List);
?>
Теперь:
// теперь $A===array("a"=>"Test", "b"=>"Text",
"c"=>"CCC", "d"=>"DDD")
Функция поддерживается PHP 4, PHP 5
extract
Импорт элементов массива в переменные.
Синтаксис:
int extract (array var_array [, int extract_type [, string prefix]])
Функция extract() используется для импортирования значений массива в строку. Эта функция берет ассоциативный массив var_array, использую ключ элемента как имя переменной, а значение элемента как значение полученной переменной. Для создания переменных из пары ключ = значение можно также использовать необязательные параметры extract_type и prefix.
Замечание: начиная с PHP версии 4.0.5 эта функция возвращала количество извлеченных переменных.
Функция extract() проверяет, действительно ли каждый ключ массива может быть названием переменной. Она также проверяет на наличие одинаковых названий получаемых переменных. В случае, если обнаруживаются недействительные или числовые ключи, поведение функции предопределяет параметр extract_type, который может принимать следующие значения: