Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема 9 правове регулювання та користування житловими

Функції asort, rsort, arsort. Якщо потрібно зберігати індекси елементів масиву після сортування, то потрібно використовувати функцію asort (масив [, прапори]). Якщо необхідно відсортувати масив у зворотному порядку, тобто від найбільшого значення до найменшого, то можна задіювати функцію rsort (масив [, прапори]). А якщо при цьому потрібно ще і зберегти значення ключів, то слід використовувати функцію arsort(масив [, прапори]). Синтаксис у цих функцій абсолютно такий же, як у функції sort. Відповідно і значення прапорів можуть бути такими ж.

Сортування масивів. Необхідність сортування даних, у тому числі і даних, що зберігаються у вигляді масивів, дуже часто виникає при вирішенні найрізноманітніших завдань. В PHP це робиться однією простою командою.

Всі елементи масиву перетворяться в рядки і сортуються. Потім обробник запам’ятовує перший ключ для кожного значення, а решту ключів ігнорує.

Функція sort має наступний синтаксис: sort (масив [, прапори]); - і сортує масив, тобто упорядковує його значення за збільшенням. Ця функція видаляє всі ключі, що існували в масиві, замінюючи їх числовими індексами, відповідними новому порядку елементів. У разі успішного завершення роботи вона повертає true, в інакшому випадку – false.

Нехай у нас є два масиви: ціни товарів – їх назви і, навпаки, назви товарів – їх ціни. Упорядкуємо ці масиви за збільшенням:

 

<?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)

Як додатковий аргумент прапорця може використовуватися одна з наступних констант:

· 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] => Війна і мир)

Сортування масиву по ключах. Може виникнути необхідність в сортуванні масиву за значеннями його ключів. Наприклад, якщо у нас є масив даних про книги, як в приведеному вище прикладі, то цілком ймовірно, що ми захочемо відсортувати книги по іменах авторів. Для цього в PHP також не потрібно писати багато рядків коду – можна просто скористатися функцією ksort() для сортування за збільшенням (прямий порядок сортування) або krsort() – для зворотнього порядку сортування.

Синтаксис цих функцій аналогічний синтаксису функції sort().

 

<?php $books = array("Пушкін"=>"Руслан і Людмила", "Толстой"=>"Війна і мир", "Лермонтов"=>"Герой нашого часу");ksort($books); // масив сортований, зберігаючи значення ключів print_r($books);?>

Отримаємо:

 

 

Array ([Лермонтов] => Герой нашого часу [Пушкін] => Руслан і Людмила [Толстой] => Війна і мир)

Сортування за допомогою функції, заданої користувачем. PHP пропонує користувачеві можливість самому задавати критерії для сортування даних. Критерій задається за допомогою функції, ім’я якої вказується як аргумент для спеціальних функцій сортування usort() або uksort(). За назвами цих функцій можна здогадатися, що usort() сортує значення елементів масиву, а uksort() – значення ключів масиву за допомогою визначеної користувачем функції. Обидві функції повертають true, якщо сортування пройшло успішно, і false – в інакшому випадку. Їх синтаксис виглядає таким чином:

 

usort (масив, сортуюча функція);uksort (масив, сортуюча функція);

Сортуюча функція повинна мати два аргументи. У них інтерпретатор передає пари значень елементів для функції usort() або ключів масиву для функції uksort().

Сортуюча функція повинна повертати:

ціле число, менше нуля, якщо перший аргумент менше другого;

число, рівне нулю, якщо два аргументи рівні;

число більше нуля, якщо перший аргумент більший другого.

Як і для інших функцій сортування, для функції usort() існує аналог, що не змінює значення ключів, – функція uasort().

Виділення підмасиву. Оскільки масив – це набір елементів, то цілком імовірно, що іноді потрібно виділити з нього який-небудь підмасив. У PHP для цих цілей використовується функція 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), тобто підмасив, що складається з елементів 3, 4, 5 */ $sub_arr = array_slice($arr,-2); print_r($sub_arr); // виведе Array ([0] => 4 [1] => 5) // тобто підмасив, з елементів 4, 5?>

Якщо задати параметр довжина під час використання array_slice, то буде виділений підмасив, що має рівно стільки елементів, скільки задано цим параметром. Довжину можна вказувати також і негативну. В цьому випадку інтерпретатор видалить з кінця масиву число елементів, рівне модулю параметра довжина.

Функція array_chunk розбиває масив на декілька підмасивів заданої довжини. Синтаксис її такий:

array_chunk (масив, розмір [, зберігати_ключі]);

У результаті роботи array_chunk() повертає багатовимірний масив, елементами якого є отримані підмасиви. Якщо задати параметр зберігати ключі як true, то під час розбиття будуть збережені ключі початкового масиву. В інакшому випадку ключі елементів замінюються числовими індексами, які починаються з нуля.

Сума елементів масиву. Функція, що обчислює суму всіх елементів масиву називається array_sum() і як параметр їй передається тільки ім’я масиву, суму значень елементів якого потрібно обчислити.

Як приклад використання цієї функції наведемо рішення складнішої задачі, ніж просто обчислення суми елементів. Цей приклад також ілюструє застосування функції array_slice() згадуваної раніше.

Нехай даний масив натуральних чисел. Потрібно знайти в ньому таке число, що сума елементів праворуч від нього рівна сумі елементів зліва:

 

<?php $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>"; }?>

 

<== предыдущая лекция | следующая лекция ==>
ІІ. Робота з масивами даних | Методичні рекомендації
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 214; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.