Similar presentations:
Функции и массивы в PHP. (Лекция 11)
1. Лекция 11: Функции и массивы в PHP
2. Изучаемые вопросы
1. Функции, определяемые пользователем2. Массивы
3. 1. Функции, определяемые пользователем
function имя_функции ($параметр1, $параметр2, ....$параметрn)
{
тело функции
}
Например:
function display_copyright($site_name)
{
print "Copyright © 2015
$site_name. All Rights Reserved.";
}
4. Возврат значений функцией Пример: вычисление налога:
$price = 24.99; $tax = .06;function calculate_cost($tax, $price)
{
$sales_tax = $tax;
return $price + ($price * $sales_tax);
}
$total_cost = calculate_cost ($tax,
$price);
// Округлить цену до двух десятичных цифр.
$total_cost = round($total_cost, 2);
print "Total cost: $".$total_cost;
5. Рекурсивные функции Пример вычисления факториала:
<?phpfunction fact($n)
{
if($n==0) $fact=1;
else $fact = $n * fact($n-1);
return $fact = $n * fact($n-1);
}
echo ”fact=”.fact(5);
?>
6. Функции-переменные (variable functions)
$имя_функции( );function french( ) {
print "Bienvenue sur PHP Recipes.";
}
function english( ) {
print "Welcome to PHP Recipes.";
}
$language = "french":
$language( );
7. Построение библиотек функций
<?// Файл: array_sorting.inc
// Назначение: библиотека функций для сортировки массивов.
function merge_sort($array, $tmparray, $right, $left) {
...
}
function bubble_sort($array, $n) {
...
}
function quicksort ($array, $right, $left) {
...
}
?>
8.
include(путь/имя_файла);require( путь/имя_файла );
или
include " путь/имя_файла";
require " путь/имя_файла";
9. 2. Массивы
$array_name = array("key1"=>"value1","key2"=>"value2");
$array_name["key1"] = value1;
<?php
$del_items = array("10"=>"Наука и
жизнь", "12"=>"Информатика");
$del_items["13"] = "Программирование
на Php";
?>
10. Операции с массивами
<?php$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("и"=>"История", "м"=>"Биология",
"ф"=>"Физика");
$c = $a + $b;
$d = $b + $a;
print_r($c);
// получим: Array([и]=>Информатика
[м]=>Математика [ф]=>Физика)
print_r($d);
// получим: Array([и]=>История [м]=>Биология
[ф]=>Физика)
?>
11. Сравнение массивов
<?php$a = array("и"=>"Информатика",
"м"=>"Математика");
$b = array("м"=>"Математика",
"и"=>"Информатика");
if ($a == $b) echo "Массивы равны и";
else echo "Массивы НЕ равны и ";
if ($a === $b) echo " эквивалентны";
else echo " НЕ эквивалентны";
// получим echo "Массивы равны и НЕ
эквивалентны"
?>
12. Функция count
<?php$del_items = array("langs" =>
array("10"=>"Python", "12"=>"Lisp"),
"other"=>"Информатика");
echo count($del_items)."<br>";
// выведет 2
echo count($del_items,
COUNT_RECURSIVE);
// выведет 4
?>
13. Функция in_array
in_array("искомое значение", "массив",["ограничение на тип"]);
<?php
$langs = array("Lisp", "Python", array("PHP",
"Java"), "Perl");
if (in_array("Java", $langs)) echo "Надо бы
изучить Java<br>»;
if (in_array("java", $langs)) echo "Надо бы
изучить java<br>";
if (in_array(array("PHP", "Java"), $langs))
echo "Надо бы изучить PHP и Java<br>";
?>
14. Функция array_search
array_search("искомое значение", "массив",["ограничение на тип"]);
<?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 – м";
}
?>
15. Функция array_keys
array_keys ("массив", ["значение для поиска"]);<?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
16. Функция array_unique
<?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 )
17. Сортировка массивов Функция sort
sort (массив [, флаги]);<?php
$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 )
18.
•SORT_REGULAR – сравнивать элементымассива обычным образом;
•SORT_NUMERIC – сравнивать элементы
массива как числа;
•SORT_STRING – сравнивать элементы
массива как строки.
19. Функции asort, rsort, arsort
asort (массив [, флаги])rsort (массив [, флаги])
arsort(массив [, флаги])
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир", "Лермонтов"=>"Герой нашего
времени");
asort($books);
print_r($books);echo "<br>";
rsort($books);
print_r($books);
?>
Результат:
Array ( [Толстой] => Война и мир
[Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила )
Array ( [0] => Руслан и Людмила
[1] => Герой нашего времени
[2] => Война и мир )
20.
Задание: изменять порядок отображения элементов по желаниюпользователя
<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>
21.
<?phpprint_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>";
?>
22. Сортировка массива по ключам
<?php$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир", "Лермонтов"=>"Герой
нашего времени");
ksort($books); // сортируем массив, сохраняя
значения ключей
print_r($books);
?>
Результат:
Array ( [Лермонтов] => Герой нашего времени
[Пушкин] => Руслан и Людмила
[Толстой] => Война и мир )
23. Сортировка с помощью функции, заданной пользователем
usort (массив, сортирующая функция);uksort (массив, сортирующая функция);
<?php
$books = array(
"Герой нашего времени" => array ("Лермонтов", 1840),
"Руслан и Людмила" => array("Пушкин",1820),
"Война и мир" => array ("Толстой",1863),
"Идиот" => array("Достоевский",1868));
uasort($books, "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;
}
?>
Пушкин: "Руслан и Людмила"
Лермонтов: "Герой нашего времени"
Толстой: "Война и мир"
Достоевский: "Идиот"
24. Применение функции ко всем элементам массива
array_walk(массив, функция [, данные]<?php
$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
function try_walk($val,$key,$data)
{
echo "$data \"$val\" написал $key<br>";
}
array_walk($books1,"try_walk","Роман");
?>
Результат работы скрипта:
Роман "Руслан и Людмила" написал А.С. Пушкин
Роман "Война и мир" написал Л.Н. Толстой
Роман "Герой нашего времени" написал М.Ю. Лермонтов
25.
<?php$books1 = array(
"А.С. Пушкин"=>"Руслан и Людмила",
"Л.Н. Толстой"=>"Война и мир",
"М.Ю. Лермонтов"=>"Герой нашего времени");
function try_walk(&$val,$key)
{
$key = "<p>Автор: " .$key ."<br>";
$val = "Название: \"" . $val ."\"</p>";
echo $key.$val;
}
array_walk($books1,"try_walk");
print_r($books1);
?>
Результат работы скрипта:
Автор: А.С. Пушкин
Название: "Руслан и Людмила"
Автор: Л.Н. Толстой
Название: "Война и мир"
Автор: М.Ю. Лермонтов
Название: "Герой нашего времени"
Array ( [А.С. Пушкин] => Название: "Руслан и Людмила"
[Л.Н. Толстой] => Название: "Война и мир"
[М.Ю. Лермонтов] => Название: "Герой нашего времени")
26. Выделение подмассива Функция array_slice
Выделение подмассиваФункция array_slice
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 )*/
$sub_arr = array_slice($arr,-2);
print_r($sub_arr);
// выведет Array ( [0] => 4 [1] => 5 ),
?>
27.
<?php$arr = array(1, 2, 3, 4, 5);
$sub = array_slice($arr, 2, 2);
$sub1 = array_slice($arr,-3, 2);
$sub2 = array_slice($arr,0, -1);
$sub3 = array_slice($arr,-4, -2);
?>
28. Функция array_chunk
array_chunk ( массив, размер [, сохранять_ключи]);<?php
$persons = array("Иванов", "Петров", "Сидорова", "Зайцева",
"Волкова");
$triples = array_chunk($persons,3);
foreach ($triples as $k => $table)
{
echo "За столиком номер $k сидят:<ul>";
foreach ($table as $pers) echo "<li>$pers"</li>;
echo "</ul>";
}
?>
Результат:
за столиком номер 0 сидят:
• Иванов
• Петров
• Сидорова
за столиком номер 1 сидят:
• Зайцева
• Волкова
29. Сумма элементов массива
<?php$arr = array(2, 1, 3, 4, 5, 6, 4);
foreach ($arr as $k => $val)
{
$p = $k + 1;
$out_next = array_slice($arr, $p);
$out_prev = array_slice($arr, 0, $k);
$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>";
}
?>