Язык PHP предоставляет множество функций для работы с
В одной из первых лекций мы рассказывали о том, как можно
С помощью конструкции array
$array_name = array("key1"=>"value1",
"key2"=>"value2");
Непосредственно задавая
$array_name["key1"] = value1;
Например, нам нужно хранить список документов, которые будут удалены из базы данных. Естественно хранить его в виде
<?
$del_items = array("10"=>"Наука и жизнь",
"12"=>"Информатика");
$del_items["13"] = "Программирование на Php";
// добавляем элемент в массив
?>
+ ". Вообще говоря, эту $a и $b, то результатом их $c, состоящий из элементов $a, к которым справа дописаны элементы $b. Причем, если встречаются совпадающие $a. Таким образом, если
<?
$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("и"=>"История","м"=>"Биология",
"ф"=>"Физика");
$c = $a + $b;
$d = $b + $a;
print_r($c);
/* получим: Array([и]=>Информатика
[м]=>Математика [ф]=>Физика) */
print_r($d);
/* получим: Array([и]=>История
[м]=>Биология [ф]=>Физика) */
?>
== ", а эквивалентность – символом " === ".
<?
$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("м"=>"Математика",
"и"=>"Информатика");
if ($a == $b) echo "Массивы равны и";
else echo "Массивы НЕ равны и ";
if ($a === $b) echo " эквивалентны";
else echo " НЕ эквивалентны";
// получим echo "Массивы равны и
НЕ эквивалентны"
?>
Далее рассмотрим еще одну важную
Не раз уже мы использовали функцию , чтобы вычислить 1. Исключение составляет переменная типа NULL – есть 0. Кроме того, применяя эту функцию к многомерному COUNT_RECURSIVE.
<?
$del_items = array("langs" => array(
"10"=>"Python", "12"=>"Lisp"),
"other"=>"Информатика");
echo count($del_items) . "<br>";
// выведет 2
echo count($del_items,COUNT_RECURSIVE);
// выведет 4
?>
Мы не будем повторять все, что было сказано о
in_array("искомое значение","массив",
["ограничение на тип"]);
позволяет установить, содержится ли в заданном true, то в
Например, имеется
<?php
$langs = array("Lisp","Python","Java",
"PHP","Perl");
if (in_array("PHP",$langs,true))
echo "Надо бы изучить PHP<br>";
// выведет сообщение "Надо бы изучить PHP"
if (in_array("php",$langs))
echo "Надо бы изучить php<br>";
// ничего не выведет, поскольку в массиве
// есть строка "PHP", а не "php"
?>
В качестве искомого
Например:
<?php
$langs = array("Lisp","Python",array("PHP","Java"),"Perl");
if (in_array(array("PHP","Java"),$langs))
echo "Надо бы изучить PHP и Java<br>";
?>
Это еще одна функция для возвращает
array_search("искомое значение","массив",
["ограничение на тип"]);
Сравнение строк NULL.
Пример 7.4.Теперь, наоборот, пусть у нас есть
<?php
$langs = array("","Lisp","Python","Java",
"PHP","Perl");
if (!array_search("PHP",$langs))
echo "Надо бы изучить PHP<br>";
else {
$k = array_search("PHP",$langs);
echo "PHP я изучила ".$k."-м";
}
?>
В результате мы получим строчку:
PHP я изучила 4-м
Очевидно, что эта функция более функциональна, чем , поскольку мы не только получаем информацию о том, что искомый элемент в вернет
Функция выбирает все
array_keys ("массив",
["значение для поиска"])
Функция возвращает как строковые, так и числовые
Пример 7.5.Мы записали
<?php
$langs =
array("Lisp","Python","Java","PHP",
"Perl","Lisp");
$lisp_keys = array_keys($langs,"Lisp");
echo "Lisp входит в массив ".
count($lisp_keys) ." раза:<br>";
foreach ($lisp_keys as $val){
echo "под номером $val <br>";
}
?>
В результате получим:
Lisp входит в массив 2 раза: под номером 0 под номером 5
Функция , как и две предыдущие, зависит от регистра, т.е. элементов LISP в появилась только в
Если есть функция для получения всех . Все
Итак, мы выяснили, что язык Lisp случайно упомянут в нашем .
Функция возвращает новый
Попробуем избавиться от повторяющихся языков в списке изученных.
<?php
$langs =
array("Lisp","Java","Python","Java",
"PHP","Perl","Lisp");
print_r(array_unique($langs));
?>
Получим следующее:
Array ( [0] => Lisp [1] => Java [2] => Python [3]
=> PHP [4] => Perl )
Далее рассмотрим задачу
Необходимость
Функция имеет следующий синтаксис
sort (массив [, флаги])
и true, иначе – false.
Пример 7.6.Пусть у нас есть два
<?
$items = array(10 => "хлеб", 20 => "молоко",
30 => "бутерброд");
sort($items);
// строки сортируются в алфавитном
// порядке, ключи теряются
print_r($items);
$rev_items = array("хлеб" => 10,
"бутерброд" => 30, "молоко" => 20);
sort($rev_items);
// числа сортируются по возрастанию,
// ключи теряются
print_r($rev_items);
?>
Получим:
Array ( [0] => бутерброд [1] =>
молоко [2] => хлеб )
Array ( [0] => 10 [1] => 20 [2] => 30 )
В качестве дополнительного аргумента может использоваться одна из следующих констант:
SORT_REGULAR – автоматический выбор метода; SORT_NUMERIC – сравнивать элементы SORT_STRING – сравнивать элементы Если требуется сохранять индексы элементов . Если необходимо . А если при этом нужно еще и сохранить . Как вы, наверное, заметили синтаксис у этих функций абсолютно такой же, как у функции . Соответственно и : , , . Кстати говоря, флаг появился только в
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир",
"Лермонтов"=>"Герой нашего времени");
asort($books);
// сортируем массив,
// сохраняя значения ключей
print_r($books);
echo "<br>";
rsort($books);
// сортируем массив в обратном порядке,
// ключи будут заменены
print_r($books);
?>
В результате работы этого скрипта получим:
Array ( [Толстой] => Война и мир
[Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила )
Array ( [0] => Руслан и Людмила
[1] => Герой нашего времени
[2] => Война и мир )
Пример 7.8. Допустим, мы создаем каталог описаний документов. У каждого документа есть автор, название, дата публикации и краткое содержание. Мы уже не раз отображали описания, составленные из этих характеристик. Каждый раз порядок отображения этих элементов зависел от созданной нами программы. Теперь же мы хотим иметь возможность изменять порядок отображения элементов по желанию пользователя. Составим для этого следующую форму:
<form action=task.php>
<table border=1>
<tr><td>Название </td><td><input type=text
name=title size=5> </td></tr>
<tr><td>Краткое содержание </td><td><input
type=text name=description size=5>
</td></tr>
<tr><td>Автор </td><td><input type=text
name=author size=5> </td></tr>
<tr><td>Дата публикации </td><td><input
type=text name=published size=5></td></tr>
</table>
<input type=submit value="Отправить">
</form>
Будем упорядочивать данные, переданные этой формой, по убыванию их . Поскольку нам важен только новый порядок элементов, сохраним в новом
<?php
print_r($_GET); echo "<br>";
arsort ($_GET);
// сортируем массив в обратном порядке,
// сохраняя ключи
print_r($_GET); echo "<br>";
$ordered_names = array_keys($_GET);
// составляем новый массив
foreach($ordered_names as $key => $val)
echo "$key :$val <br>";
// выводим элементы нового массива
?>
Очевидно, что может возникнуть необходимость в для – для .
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир",
"Лермонтов"=>"Герой нашего времени");
ksort($books);
// сортируем массив,
// сохраняя значения ключей
print_r($books);
?>
Получим:
Array ( [Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила
[Толстой] => Война и мир )
Кроме двух простых способов или . По названиям этих функций можно догадаться, что – true, если false – в противном случае. Их синтаксис выглядит следующим образом:
usort (массив , сортирующая функция) uksort (массив , сортирующая функция)
Конечно же, нельзя или . Во-вторых, сортирующая функция должна возвращать:
Как и для других функций существует аналог, не изменяющий .
Пример 7.10. Допустим, у нас есть
<?php
// массив выглядит таким образом:
$books = array("Герой нашего времени" =>
array ("Лермонтов", 1840),
"Руслан и Людмила" => array("Пушкин",1820),
"Война и мир" => array ("Толстой",1863),
"Идиот" => array("Достоевский",1868));
/* можно, конечно переписать этот массив
по-другому, сделав год издания, например,
индексом, но гораздо удобнее написать свою
функцию для сортировки */
uasort($books,"cmp");
// сортируем массив с помощью функции cmp
foreach ($books as $key => $book) {
echo "$book[0]: \"$key\"<br>";
}
function cmp($a,$b){
// функция, определяющая способ сортировки
if ($a[1] < $b[1]) return -1;
elseif ($a[1]==$b[1]) return 0;
else return 1;
}
?>
В результате получим:
Пушкин: "Руслан и Людмила" Лермонтов: "Герой нашего времени" Толстой: "Война и мир" Достоевский: "Идиот"
Мы применили нашу собственную функцию
применяет созданную пользователем функцию ко всем элементам массив и возвращает true в случае успешного выполнения операции и false – в противном случае
Пользовательская функция, как правило, имеет два аргумента, в которые поочередно передаются указан третий аргумент, то он будет рассмотрен как будет выдаваться предупреждение.
Если необходимо работать с реальными считается неопределенным.
<?php
$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим
// применить к элементам массива
function try_walk($val,$key,$data){
echo "$data \"$val\" написал $key<br>";
}
// применяем ко всем элементам массива
// $books1 функцию try_walk
array_walk($books1,"try_walk","Роман");
?>
В результате работы скрипта получим:
Роман "Руслан и Людмила" написал А.С. Пушкин
Роман "Война и мир" написал Л.Н. Толстой
Роман "Герой нашего времени"
написал М.Ю. Лермонтов
Заметим, что мы не изменили $ функции try_walk по ссылке.
<?php
$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим
// применить к элементам массива
function try_walk($val,$key){
$key = "<p>Автор: " .$key ."<br>";
$val = "Название: \"" . $val ."\"</p>";
echo $key.$val;
}
// применяем ко всем элементам массива
// $book1 функцию try_walk
array_walk($books1,"try_walk");
print_r($books1);
?>
В результате работы скрипта получим:
Автор: А.С. Пушкин
Название: "Руслан и Людмила"
Автор: Л.Н. Толстой
Название: "Война и мир"
Автор: М.Ю. Лермонтов
Название: "Герой нашего времени"
Array ( [А.С. Пушкин] =>
Название: "Руслан и Людмила"
[Л.Н. Толстой] =>
Название: "Война и мир"
[М.Ю. Лермонтов] =>
Название: "Герой нашего времени")
Поскольку . Ее синтаксис таков:
array_slice (массив,
номер_элемента [, длина])
Эта функция длина в массив, начиная с элемента, номер которого задан параметром номер_элемента. Положительный номер_элемента указывает на порядковый номер элемента относительно начала
<?php $arr = array(1,2,3,4,5); $sub_arr = array_slice($arr,2); print_r($sub_arr); /* выведет Array ( [0] => 3 [1] =>4 [2] => 5 ), т.е. подмассив, состоящий из элементов 3, 4, 5 */ $sub_arr = array_slice($arr,-2); print_r($sub_arr); // выведет Array ( [0] => 4 [1] => 5 ), // т.е. подмассив, из элементов 4, 5 ?>
Если задать параметр длина при использовании , то будет length, в последовательность войдут все элементы исходного массива, начиная с позиции offset и заканчивая позицией, отстоящей на length элементов от конца array.
<?php
$arr = array(1,2,3,4,5);
$sub_arr = array_slice($arr, 2, 2);
// содержит массив из элементов 3, 4
$sub = array_slice($arr,-3, 2);
// тоже содержит массив из элементов 3, 4
$sub1 = array_slice($arr,0, -1);
// содержит массив из
// элементов 1, 2, 3, 4
$sub2 = array_slice($arr,-4, -2);
// содержит массив из элементов 2, 3
?>
Есть еще одна функция, похожая на – это .
array_chunk ( массив, размер
[, сохранять_ключи])
В результате работы возвращает многомерный true, то при разбиении будут сохранены
Пример 7.15.У нас есть список приглашенных, оформленный в виде
<?php
$persons = array("Иванов", "Петров",
"Сидорова","Зайцева", "Волкова");
$triples = array_chunk($persons,3);
// делим массив на подмассивы
// по три элемента
foreach ($triples as $k => $table){
// выводим полученные тройки
echo "За столиком номер $k сидят: <ul>";
foreach ($table as $pers)
echo "<li>$pers";
echo "</ul>";
}
?>
В результате получим:
за столиком номер 0 сидят: • Иванов • Петров • Сидорова за столиком номер 1 сидят: • Зайцева • Волкова
В этом разделе мы познакомимся с функцией, вычисляющей . И в качестве параметра ей передается только имя
В качестве примера использования этой функции приведем решение более сложной задачи, чем просто вычисление , которую мы обсуждали чуть раньше.
Пример 7.16.Пусть дан
<?php
//массив задается функцией array
$arr = array(2,1,3,4,5,6,4);
// перебираем каждый элемент массива $arr.
// Внутри цикла текущий ключ массива
// содержится в переменной $k,
// текущее значение – в переменной $val
foreach ($arr as $k => $val){
$p = $k + 1;
// синтаксис array array_slice (
// array array,int offset [,int length])
// array_slice выделяет подмассив
// длины length в массиве array,
// начиная с элемента offset.
$out_next = array_slice($arr,$p);
// получаем массив элементов,
// идущих после текущего
$out_prev = array_slice($arr,0,$k);
// получаем массив элементов,
// идущих перед текущим
// функция mixed array_sum (array array)
// подсчитывает сумму элементов массива array
$next_sum = array_sum($out_next);
$prev_sum = array_sum($out_prev);
// если сумма элементов до текущего равна
// сумме элементов после, то выводим
// значение текущего элемента
if ($next_sum==$prev_sum)
echo "value:$val";
// можно посмотреть, что представляют собой
// рассмотренные массивы на каждом шаге
// print_r($out_next); echo "<br>";
// print_r($out_prev);
// echo "$next_sum, $prev_sum<br>";
echo "<hr>";
}
?>
Итак, подведем итоги. В этой лекции мы изучили ряд функций, упрощающих работу с
Язык PHP предоставляет множество функций для работы с
В одной из первых лекций мы рассказывали о том, как можно
С помощью конструкции array
$array_name = array("key1"=>"value1",
"key2"=>"value2");
Непосредственно задавая
$array_name["key1"] = value1;
Например, нам нужно хранить список документов, которые будут удалены из базы данных. Естественно хранить его в виде
<?
$del_items = array("10"=>"Наука и жизнь",
"12"=>"Информатика");
$del_items["13"] = "Программирование на Php";
// добавляем элемент в массив
?>
+ ". Вообще говоря, эту $a и $b, то результатом их $c, состоящий из элементов $a, к которым справа дописаны элементы $b. Причем, если встречаются совпадающие $a. Таким образом, если
<?
$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("и"=>"История","м"=>"Биология",
"ф"=>"Физика");
$c = $a + $b;
$d = $b + $a;
print_r($c);
/* получим: Array([и]=>Информатика
[м]=>Математика [ф]=>Физика) */
print_r($d);
/* получим: Array([и]=>История
[м]=>Биология [ф]=>Физика) */
?>
== ", а эквивалентность – символом " === ".
<?
$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("м"=>"Математика",
"и"=>"Информатика");
if ($a == $b) echo "Массивы равны и";
else echo "Массивы НЕ равны и ";
if ($a === $b) echo " эквивалентны";
else echo " НЕ эквивалентны";
// получим echo "Массивы равны и
НЕ эквивалентны"
?>
Далее рассмотрим еще одну важную
Не раз уже мы использовали функцию , чтобы вычислить 1. Исключение составляет переменная типа NULL – есть 0. Кроме того, применяя эту функцию к многомерному COUNT_RECURSIVE.
<?
$del_items = array("langs" => array(
"10"=>"Python", "12"=>"Lisp"),
"other"=>"Информатика");
echo count($del_items) . "<br>";
// выведет 2
echo count($del_items,COUNT_RECURSIVE);
// выведет 4
?>
Мы не будем повторять все, что было сказано о
in_array("искомое значение","массив",
["ограничение на тип"]);
позволяет установить, содержится ли в заданном true, то в
Например, имеется
<?php
$langs = array("Lisp","Python","Java",
"PHP","Perl");
if (in_array("PHP",$langs,true))
echo "Надо бы изучить PHP<br>";
// выведет сообщение "Надо бы изучить PHP"
if (in_array("php",$langs))
echo "Надо бы изучить php<br>";
// ничего не выведет, поскольку в массиве
// есть строка "PHP", а не "php"
?>
В качестве искомого
Например:
<?php
$langs = array("Lisp","Python",array("PHP","Java"),"Perl");
if (in_array(array("PHP","Java"),$langs))
echo "Надо бы изучить PHP и Java<br>";
?>
Это еще одна функция для возвращает
array_search("искомое значение","массив",
["ограничение на тип"]);
Сравнение строк NULL.
Пример 7.4.Теперь, наоборот, пусть у нас есть
<?php
$langs = array("","Lisp","Python","Java",
"PHP","Perl");
if (!array_search("PHP",$langs))
echo "Надо бы изучить PHP<br>";
else {
$k = array_search("PHP",$langs);
echo "PHP я изучила ".$k."-м";
}
?>
В результате мы получим строчку:
PHP я изучила 4-м
Очевидно, что эта функция более функциональна, чем , поскольку мы не только получаем информацию о том, что искомый элемент в вернет
Функция выбирает все
array_keys ("массив",
["значение для поиска"])
Функция возвращает как строковые, так и числовые
Пример 7.5.Мы записали
<?php
$langs =
array("Lisp","Python","Java","PHP",
"Perl","Lisp");
$lisp_keys = array_keys($langs,"Lisp");
echo "Lisp входит в массив ".
count($lisp_keys) ." раза:<br>";
foreach ($lisp_keys as $val){
echo "под номером $val <br>";
}
?>
В результате получим:
Lisp входит в массив 2 раза: под номером 0 под номером 5
Функция , как и две предыдущие, зависит от регистра, т.е. элементов LISP в появилась только в
Если есть функция для получения всех . Все
Итак, мы выяснили, что язык Lisp случайно упомянут в нашем .
Функция возвращает новый
Попробуем избавиться от повторяющихся языков в списке изученных.
<?php
$langs =
array("Lisp","Java","Python","Java",
"PHP","Perl","Lisp");
print_r(array_unique($langs));
?>
Получим следующее:
Array ( [0] => Lisp [1] => Java [2] => Python [3]
=> PHP [4] => Perl )
Далее рассмотрим задачу
Необходимость
Функция имеет следующий синтаксис
sort (массив [, флаги])
и true, иначе – false.
Пример 7.6.Пусть у нас есть два
<?
$items = array(10 => "хлеб", 20 => "молоко",
30 => "бутерброд");
sort($items);
// строки сортируются в алфавитном
// порядке, ключи теряются
print_r($items);
$rev_items = array("хлеб" => 10,
"бутерброд" => 30, "молоко" => 20);
sort($rev_items);
// числа сортируются по возрастанию,
// ключи теряются
print_r($rev_items);
?>
Получим:
Array ( [0] => бутерброд [1] =>
молоко [2] => хлеб )
Array ( [0] => 10 [1] => 20 [2] => 30 )
В качестве дополнительного аргумента может использоваться одна из следующих констант:
SORT_REGULAR – автоматический выбор метода; SORT_NUMERIC – сравнивать элементы SORT_STRING – сравнивать элементы Если требуется сохранять индексы элементов . Если необходимо . А если при этом нужно еще и сохранить . Как вы, наверное, заметили синтаксис у этих функций абсолютно такой же, как у функции . Соответственно и : , , . Кстати говоря, флаг появился только в
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир",
"Лермонтов"=>"Герой нашего времени");
asort($books);
// сортируем массив,
// сохраняя значения ключей
print_r($books);
echo "<br>";
rsort($books);
// сортируем массив в обратном порядке,
// ключи будут заменены
print_r($books);
?>
В результате работы этого скрипта получим:
Array ( [Толстой] => Война и мир
[Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила )
Array ( [0] => Руслан и Людмила
[1] => Герой нашего времени
[2] => Война и мир )
Пример 7.8. Допустим, мы создаем каталог описаний документов. У каждого документа есть автор, название, дата публикации и краткое содержание. Мы уже не раз отображали описания, составленные из этих характеристик. Каждый раз порядок отображения этих элементов зависел от созданной нами программы. Теперь же мы хотим иметь возможность изменять порядок отображения элементов по желанию пользователя. Составим для этого следующую форму:
<form action=task.php>
<table border=1>
<tr><td>Название </td><td><input type=text
name=title size=5> </td></tr>
<tr><td>Краткое содержание </td><td><input
type=text name=description size=5>
</td></tr>
<tr><td>Автор </td><td><input type=text
name=author size=5> </td></tr>
<tr><td>Дата публикации </td><td><input
type=text name=published size=5></td></tr>
</table>
<input type=submit value="Отправить">
</form>
Будем упорядочивать данные, переданные этой формой, по убыванию их . Поскольку нам важен только новый порядок элементов, сохраним в новом
<?php
print_r($_GET); echo "<br>";
arsort ($_GET);
// сортируем массив в обратном порядке,
// сохраняя ключи
print_r($_GET); echo "<br>";
$ordered_names = array_keys($_GET);
// составляем новый массив
foreach($ordered_names as $key => $val)
echo "$key :$val <br>";
// выводим элементы нового массива
?>
Очевидно, что может возникнуть необходимость в для – для .
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир",
"Лермонтов"=>"Герой нашего времени");
ksort($books);
// сортируем массив,
// сохраняя значения ключей
print_r($books);
?>
Получим:
Array ( [Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила
[Толстой] => Война и мир )
Кроме двух простых способов или . По названиям этих функций можно догадаться, что – true, если false – в противном случае. Их синтаксис выглядит следующим образом:
usort (массив , сортирующая функция) uksort (массив , сортирующая функция)
Конечно же, нельзя или . Во-вторых, сортирующая функция должна возвращать:
Как и для других функций существует аналог, не изменяющий .
Пример 7.10. Допустим, у нас есть
<?php
// массив выглядит таким образом:
$books = array("Герой нашего времени" =>
array ("Лермонтов", 1840),
"Руслан и Людмила" => array("Пушкин",1820),
"Война и мир" => array ("Толстой",1863),
"Идиот" => array("Достоевский",1868));
/* можно, конечно переписать этот массив
по-другому, сделав год издания, например,
индексом, но гораздо удобнее написать свою
функцию для сортировки */
uasort($books,"cmp");
// сортируем массив с помощью функции cmp
foreach ($books as $key => $book) {
echo "$book[0]: \"$key\"<br>";
}
function cmp($a,$b){
// функция, определяющая способ сортировки
if ($a[1] < $b[1]) return -1;
elseif ($a[1]==$b[1]) return 0;
else return 1;
}
?>
В результате получим:
Пушкин: "Руслан и Людмила" Лермонтов: "Герой нашего времени" Толстой: "Война и мир" Достоевский: "Идиот"
Мы применили нашу собственную функцию
применяет созданную пользователем функцию ко всем элементам массив и возвращает true в случае успешного выполнения операции и false – в противном случае
Пользовательская функция, как правило, имеет два аргумента, в которые поочередно передаются указан третий аргумент, то он будет рассмотрен как будет выдаваться предупреждение.
Если необходимо работать с реальными считается неопределенным.
<?php
$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим
// применить к элементам массива
function try_walk($val,$key,$data){
echo "$data \"$val\" написал $key<br>";
}
// применяем ко всем элементам массива
// $books1 функцию try_walk
array_walk($books1,"try_walk","Роман");
?>
В результате работы скрипта получим:
Роман "Руслан и Людмила" написал А.С. Пушкин
Роман "Война и мир" написал Л.Н. Толстой
Роман "Герой нашего времени"
написал М.Ю. Лермонтов
Заметим, что мы не изменили $ функции try_walk по ссылке.
<?php
$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим
// применить к элементам массива
function try_walk($val,$key){
$key = "<p>Автор: " .$key ."<br>";
$val = "Название: \"" . $val ."\"</p>";
echo $key.$val;
}
// применяем ко всем элементам массива
// $book1 функцию try_walk
array_walk($books1,"try_walk");
print_r($books1);
?>
В результате работы скрипта получим:
Автор: А.С. Пушкин
Название: "Руслан и Людмила"
Автор: Л.Н. Толстой
Название: "Война и мир"
Автор: М.Ю. Лермонтов
Название: "Герой нашего времени"
Array ( [А.С. Пушкин] =>
Название: "Руслан и Людмила"
[Л.Н. Толстой] =>
Название: "Война и мир"
[М.Ю. Лермонтов] =>
Название: "Герой нашего времени")
Поскольку . Ее синтаксис таков:
array_slice (массив,
номер_элемента [, длина])
Эта функция длина в массив, начиная с элемента, номер которого задан параметром номер_элемента. Положительный номер_элемента указывает на порядковый номер элемента относительно начала
<?php $arr = array(1,2,3,4,5); $sub_arr = array_slice($arr,2); print_r($sub_arr); /* выведет Array ( [0] => 3 [1] =>4 [2] => 5 ), т.е. подмассив, состоящий из элементов 3, 4, 5 */ $sub_arr = array_slice($arr,-2); print_r($sub_arr); // выведет Array ( [0] => 4 [1] => 5 ), // т.е. подмассив, из элементов 4, 5 ?>
Если задать параметр длина при использовании , то будет length, в последовательность войдут все элементы исходного массива, начиная с позиции offset и заканчивая позицией, отстоящей на length элементов от конца array.
<?php
$arr = array(1,2,3,4,5);
$sub_arr = array_slice($arr, 2, 2);
// содержит массив из элементов 3, 4
$sub = array_slice($arr,-3, 2);
// тоже содержит массив из элементов 3, 4
$sub1 = array_slice($arr,0, -1);
// содержит массив из
// элементов 1, 2, 3, 4
$sub2 = array_slice($arr,-4, -2);
// содержит массив из элементов 2, 3
?>
Есть еще одна функция, похожая на – это .
array_chunk ( массив, размер
[, сохранять_ключи])
В результате работы возвращает многомерный true, то при разбиении будут сохранены
Пример 7.15.У нас есть список приглашенных, оформленный в виде
<?php
$persons = array("Иванов", "Петров",
"Сидорова","Зайцева", "Волкова");
$triples = array_chunk($persons,3);
// делим массив на подмассивы
// по три элемента
foreach ($triples as $k => $table){
// выводим полученные тройки
echo "За столиком номер $k сидят: <ul>";
foreach ($table as $pers)
echo "<li>$pers";
echo "</ul>";
}
?>
В результате получим:
за столиком номер 0 сидят: • Иванов • Петров • Сидорова за столиком номер 1 сидят: • Зайцева • Волкова
В этом разделе мы познакомимся с функцией, вычисляющей . И в качестве параметра ей передается только имя
В качестве примера использования этой функции приведем решение более сложной задачи, чем просто вычисление , которую мы обсуждали чуть раньше.
Пример 7.16.Пусть дан
<?php
//массив задается функцией array
$arr = array(2,1,3,4,5,6,4);
// перебираем каждый элемент массива $arr.
// Внутри цикла текущий ключ массива
// содержится в переменной $k,
// текущее значение – в переменной $val
foreach ($arr as $k => $val){
$p = $k + 1;
// синтаксис array array_slice (
// array array,int offset [,int length])
// array_slice выделяет подмассив
// длины length в массиве array,
// начиная с элемента offset.
$out_next = array_slice($arr,$p);
// получаем массив элементов,
// идущих после текущего
$out_prev = array_slice($arr,0,$k);
// получаем массив элементов,
// идущих перед текущим
// функция mixed array_sum (array array)
// подсчитывает сумму элементов массива array
$next_sum = array_sum($out_next);
$prev_sum = array_sum($out_prev);
// если сумма элементов до текущего равна
// сумме элементов после, то выводим
// значение текущего элемента
if ($next_sum==$prev_sum)
echo "value:$val";
// можно посмотреть, что представляют собой
// рассмотренные массивы на каждом шаге
// print_r($out_next); echo "<br>";
// print_r($out_prev);
// echo "$next_sum, $prev_sum<br>";
echo "<hr>";
}
?>
Итак, подведем итоги. В этой лекции мы изучили ряд функций, упрощающих работу с
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.