array array_count_values(array data)
Функция array_count_values (листинг 11.22) возвращает счетчик каждого отдельного значения, заданного аргументом data. Возвращенный массив индексируется значениями, заданными в аргументе data. Несмотря на то, что в приведенном ниже примере используется цифровой массив, функция array_count_values сможет работать с элементами, которые хранят данные любого типа.
Листинг 11.22. Функция array_count_values
<?php
//генерация случайных чисел в диапазоне от 1 до 5
$sample_size = 100;
srand(time());
for($i=0; $i<$sample_size; $i++)
{
$data[] = rand(1,5);
}
// пересчет элементов
$count = array_count_values($data);
// отсортировать по индексам
ksort($count);
// распечатать итоговые данные foreach($count as $number=>$count)
{
print("$number: $count (" .
(100 * $count/$sample_size) . "%)<br>n");
}
?>
array array_diff(array data, array comparison, ...)
Функция array_diff (листинг 11.23) возвращает массив, содержащий элементы из первого аргумента, которые не встречаются в любом другом аргументе. Индексы первого массива сохраняются. Два элемента считаются идентичными, если их представление в строковом формате является аналогичным. В этом смысле значение "123" равно значению 123.00 (рис. 11.3).
Пересечение двух массивов можно определить с помощью функции array_intersect.
Листинг 11.23. Функция arraydiff
<?php
$a = array(1,2,3,4,5,6,7,8);
$b = array(2,6);
$c = array(8,1,5,6);
print_r(array_diff($a, $b, $c));
print_r(array_intersect($a, $b, $c));
?>
array array_diff_assoc(array data, array comparison, .)
Функция array_diff_assoc (листинг 11.24) возвращает массив, содержащий элементы массива, указанного в первом аргументе, которые отсутствуют в любом из следующих аргументов (аналогично функции array_diff). Кроме идентичности элементов, должны совпадать индексы (рис. 11.4). Эту функцию дополняет функция array_intersect_assoc.
| Листинг 11.24. Функция array_diff_assoc_
<?php
$a = array(
1=>'apple',
2=>'ball',
3=>'cat',
4=>'dog',
,ape'=>,banana'
);
$b = array(
2=>'apple', ,ape'=>,banana'
);
$c = array(
3=>'cat', 2=>,ball', ,cat,=>,ball', ,ape'=>,banana'
);
print_r(array_diff_assoc($a, $b, $c)); print_r(array_intersect_assoc($a, $b, $c));
?>
array array_fill(integer start, integer number, value)
Функция array_fill (листинг 11.25; рис. 11.5) используется для создания массива заданного размера, все элементы которого заполнены одним и тем же значением. Его индексы являются цифровыми и начинаются со значения, указанного аргументом start. При передаче в качестве значения наполнителя объекта будьте осторожны. При вызове функций PHP передает объекты по ссылке, а не значением. Следовательно, использование объекта в качестве третьего аргумента этой функция приведет к созданию массива ссылок на сам объект. Если необходимо создать
копию объекта, нужно использовать метод _clone. Об объектах см. в главе 6,
"Классы и объекты".
Листинг 11.25. Функция arrayfill
<?php
print_r(array_fill(100, 3, 'filler'));
array array_filter(array data, string function)
Функция array_filter (листинг 11.26) удаляет элементы из массива на основании функции обратного вызова, сохраняя при этом индексы. Функция обратного вызова должна принимать одно значение и возвратить логическое значение. Она должна вернуть значение TRUE, если значение должно присутствовать в возвращаемом массиве.
Листинг 11.26. Функция arrayfilter
<?php
function is_square($n) {
$s = sqrt($n); return(intval($s) == $s);
}
$a = range(2, 100);
foreach(array_filter($a, 'is_square') as $n)
{
print("$n<br>");
}
?>
array array_flip(array data)
Функция array_flip (листинг 11.27) возвращает данные из аргумента data, где индексы и значения меняются местами. При этом значения должны быть допустимыми индексами, т.е. целыми или строками. В противном случае PHP выводит предупреждение и пропускает такой элемент. Многократное повторение значения приводит к тому, что по мере их преобразования в индексы они перекроют друг друга (рис. 11.6).
j Листинг 11.27. Функция array_flip_
<?php
$colors = array("red", "blue", "green"); print_r(array_flip($colors));
?>
array array_intersect(array data, array comparison, .)
Функция array_intersect возвращает массив с элементами, которые встречаются во всех массивах, заданных в аргументах. Индексы при этом сохраняются. Два элемента считаются идентичными, если их представление в строковом формате является аналогичным. В этом смысле значение "123" равно 123.00. Различие между двумя и несколькими массивами можно определить с помощью функции array_diff.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Данные. Часть Пятая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Данные. Часть Четвёртая. | PHP. Данные. Часть Шестая. |