Контакти

Php знайти ключ за значенням. PHP array_search: пошук значення масиву. Перевірка наявності значення масиві. Функція in_array()

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

Перевірка наявності значення елемента в масиві може застосовуватися під час вирішення різних завдань у програмуванні.

Ми можемо отримувати різні масиви з нашої бази даних та перевіряти наявність того чи іншого значення у ньому. Шукане значення може передаватися і від користувача нашого скрипта, коли він, наприклад, щось шукає. За результатами такого пошуку можна робити певні дії. Все залежить від конкретно поставленої задачі, проте алгоритми пошуку значення в масиві будуть одними і тими ж.

Сьогодні ми їх розглянемо.

Перевірка наявності значення масиві. Функція in_array()

Функція in_array()дозволить нам перевірити наявність будь-якого значення в масиві.

Якщо результат її роботи вдалий та шуканий елемент у масиві знайдено, то функція поверне trueтобто «правду».

Функція приймає 2 обов'язкові параметри:<Что ищем>і<Где ищем>.

Також вона може приймати ще один необов'язковий параметр:<Тип данных>. Якщо цей третій необов'язковий параметр має значення true, Тоді перевіряється ще й тип даних. Тобто '2' і 2 буде не одне й те саме. У першому випадку – це рядок, у другому – число. І тоді вже вся функція in_array()не поверне значення true.

Також слід пам'ятати, що функція здійснює порівняння з урахуванням регістру символів.

Давайте розглянемо роботу цієї функції на прикладі.
Нам потрібен якийсь масив. За допомогою функції перевіримо наявність значення в масиві та виведемо на екран певне повідомлення.

Відпрацювавши функцію, виведе на екран повідомлення «Yes», ​​оскільки елемент «Marina» у нашому масиві присутній.

Поміняйте перший параметр у функції на якийсь неіснуючий елемент, і Ви побачите повідомлення «No».

Перевірка наявності значення масиві. Функція array_search()

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

Функція приймає самі параметри, як і попередня. При цьому третій параметр також є необов'язковим.

Погляньмо, як її можна використовувати, працюючи з асоціативним масивом.

"Жовтень", "Money" => 200, "name" => "Mila"); $key = array_search("Mila", $Mass1); if($key) echo $key; ?>

У разі ми побачимо на екрані «name», тобто ключ від шуканого елемента зі значенням «Mila».

Ці дві функції дуже схожі і по суті відрізняються лише значенням, що повертається.

Пошук значення у багатовимірному масиві

А що робити, якщо ми працюємо з багатовимірним масивом? Адже його елементами будуть інші масиви.

Тут уже розглянуті алгоритми не спрацюють.

Насправді все не так і складно, просто потрібно трохи ускладнити весь механізм і використовувати цикл, наприклад, foreach(), який чудово працює з масивами.

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

Все, що потрібно зробити – це перебрати елементи початкового масиву у циклі foreach(). Кожен елемент цього масиву буде розібраний на ключ ($key) та значення ($value).

Значенням буде кожен із масивів, що усередині основного багатовимірного масиву. Ось із цими значеннями ми і працюватимемо, шукаючи в кожному внутрішньому масиві шукане значення елемента.

При знаходженні ми виведемо на екран повідомлення про те, що такий елемент існує, а якщо ні, виведемо інше повідомлення, що такого елемента немає.

Давайте подивимося на прикладі коду:

"anna", "id" => 234); $Mass2 = array("name"=>"anton","id"=>24); $Mass2 = array("name"=>"ivan","id"=>007); foreach($Mass2 як $key => $value) ( ​​$name .= in_array("ivan",$value); ) if($name) echo "OK! Element here!"; else echo "No have element!"; ?>

Як Ви бачите, спочатку ми оголошуємо багатовимірний масив.

При цьому обов'язково потрібно писати не просто знак рівності, а «.=».

Робиться це у тому, щоб змінна $name не перезаписувалася кожної ітерації, а доповнювалася. Адже якщо на першій ітерації елемент буде знайдено і в змінну $name запишеться значення «true», а на другій ітерації (тобто в другому внутрішньому масиві) значення елемента, що шукається, немає, то значення змінної $name просто перезапишеться, і в результаті ми просто не отримаємо коректний результат.

Як Ви зрозуміли, результатом цього коду буде повідомлення «OK! Element here!».

Спробуйте змінити елемент, що шукається, на неіснуючий і Ви побачите повідомлення «No have element!».

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

Ось і все сьогодні! Сподіваюся, урок був зрозумілим і корисним! Спробуйте самі написати такий код, щоб розібратися в усьому остаточно.

А я чекаю на Ваші коментарі.

Діліться уроком зі своїми друзями за допомогою кнопок соц. мереж, що розташовані нижче. А також підписуйтесь на оновлення блогу. Ми вже зібрали досить непоганий архів корисних матеріалів, і вони лише поповнюватимуться!

Бажаю Вам успішного програмування!

З Вами була Ганна Котельникова!

(PHP 4> = 4.0.5, PHP 5)

array_search -- Здійснює пошук даного значення в масиві та повертає відповідний ключ у разі успіху

Опис

mixed array_search(mixed needle, array haystack [, bool strict])

Шукає в haystack значення needle і повертає ключ, якщо таке є у масиві, FALSEв іншому випадку.

Примітка:Якщо needle є рядком, проводиться регістро-залежне порівняння.

Примітка:До PHP 4.2.0, array_search()при невдачі повертала NULLзамість FALSE .

Якщо ви передасте значення TRUEяк необов'язковий третій параметр strict , функція array_search()також перевірить тип needle у масиві haystack.

Якщо хлопчик присутній у Haystack більше одного разу, буде повернено перший знайдений ключ. Для повернення ключів для всіх знайдених значень використовуйте функцію array_keys()з необов'язковим параметром search_value.


Приклад 1. Приклад використання array_search()

$array = array(0 => "blue" , ​​1 => "red" , 2 => 0x000000 , 3 => "green" , 4 => "red" );$key = array_search ("red" , $array ); // $ key = 1;
$key = array_search ("green", $array); // $ key = 2; (0x000000 == 0 == "green")
$key = array_search ("green", $array, true); // $ key = 3;
?>
Увага

Ця функція може повертати як логічне значення FALSE, що так і не відноситься до логічного типу значення, яке наводиться до FALSEнаприклад, 0 або "". За більш детальною інформацією зверніться до розділу Булевий тип. Використовуйте оператор === для перевірки значення, яке повертається цією функцією.

Програмування - це синтаксис та семантика. Перше визначається правилами мови, друге – досвідом розробника. Стосовно масивів розробник може навантажити синтаксис семантикою. Це ще об'єкт, але не масив у традиційному розумінні. PHP дає можливість створювати масиви зі змінних різних типів, включаючи себе. Елементом масиву може бути функція, тобто можливість навантажити масив реальним алгоритмом, реальним змістом.

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

Конструювання масивів

Масив у PHP має зручний синтаксис та функціональність. Цей можна описати заздалегідь, але часто зручно створювати масиви на льоту за необхідності.

$aNone = array(); // масив описаний і не містить

$aFact = array("авокадо", "персик", "вишня"); // у цьому масиві три елементи

Створення масиву в процесі перевірки будь-якої умови:

$cSrcLine = "рядок аналізованих даних";

for ($i=0; $i<13; $i++) {

if (checkFunc($cSrcLine, $cUserLine) (

$aResult = "Yes"; // додати масив PHP

$aResult = "No";

В результаті виконання цього прикладу створиться масив із 13 елементів, значеннями якого будуть лише рядки "Yes" або "No". Елементи отримають індекси від 0 до 12. Той самий ефект можна отримати, попередньо записавши "майбутній" PHP-масив у рядок:

$cFutureArray = "";

for ($i=0; $i<13; $i++) {

$cUserLine = inputUserLine(); // Введення чогось

if ($i > 0) ( $cFutureArray .= "|"; )

if (checkFunc($cSrcLine, $cUserLine) ( $cFutureArray .= "Yes";

) else ( $cFutureArray .= "No"; )

$aResult = explode("|", $cFutureArray);

Багатовимірні масиви

Багато систем управління сайтами (СМС) використовують масиви «з розмахом». З одного боку, це хороша практика, з іншого боку, це ускладнює застосування. Навіть якщо автору зрозуміла доктрина "PHP-масив у масиві", то не слід їй зловживати: не лише розробнику доведеться звикати до складної нотації. Часто згодом сам автор буде довго згадувати, що писав спочатку:

"view_manager" => array(41, "template_path_stack" => array(__DIR__ . "/../view",),

"router" => array("routes" => array("sayhello" => array(

"type" => "Zend\Mvc\Router\Http\Literal",

"options" => array("route" => "/sayhello", "defaults" => array(

"controller" => "Helloworld\Controller\Index", "action" => "index",))))),

"controllers" => array("invokables" => array(

"Helloworld\Controller\Index" => "Helloworld\Controller\IndexController"))

Це зразок практики «PHP-масив у масиві» від ZF 2. Не надто надихає спочатку, але це працює і, можливо, робить цей фреймворк успішним (приклад із модуля ZendSkeletonApplication/module/Helloworld/config/module.config.php).

Масив - важлива конструкція даних під час проектування та розробки. Його багатовимірний варіант колись був популярним, але з часом залишилася потреба в масивах максимум двох-трьох розмірностей. Так простіше і зрозуміліше, а з погляду професійності коли щось починає множитися, значить, щось у постановці завдання чи коді не так.

Просто, доступно та зрозуміло

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

Правило контролювати типи змінних чи власні ідеї перетворення семантики на синтаксис – часто недозволена розкіш. Це втрата швидкості скрипту, читабельності коду, тому простота в кодуванні завжди має істотне значення.

У PHP є істотна негативна риса: у разі невизначеності скрипт просто зависає. Не всі налагоджувачі справляються з непередбаченими обставинами, і багато залежить від досвіду та інтуїції розробника. Чим простіше алгоритм, чим доступнішою є структурована інформація, тим більше шансів знайти помилку або зовсім не допустити її.

Характерно, що коли з'явилися перші масиви, було запропоновано варіанти даних як структур - незграбна спроба створити щось із різних типів даних. Перші вижили та придбали новий ефективний синтаксис, другі пішли в історію.

Прості та асоціативні масиви

Запис двовимірного масиву - це ще одна пара дужок "[" і "]", наприклад: $aSrcData означає звернення до елемента масиву, що входить до масиву $aSrcData. У PHP немає вимоги оголошувати заздалегідь дані. Будь-яку заявлену інформацію завжди можна перевірити щодо існування.

Дуже ефективно створювати щось тільки тоді, коли це потрібно, у тому вигляді, в якому воно знадобилося, і знищувати, коли в ньому зникла потреба. Використовуючи як ключі (індекси) осмислені імена, можна отримати читабельні конструкції, осмислені в контексті поточного місця в алгоритмі:

$aAnketa["name"] = "Іванів";
$aAnketa["age"] = 42;
$aAnketa["work"] = "Директор";
$aAnketa["active"] = true;
$aTable = $aAnketa;

$aAnketa["name"] = "Петрів";
$aAnketa["age"] = 34;
$aAnketa["work"] = "Менеджер";
$aAnketa["active"] = true;
$aTable = $aAnketa;

$aAnketa["name"] = "Афанасьєв";
$aAnketa["age"] = 28;
$aAnketa["work"] = "Робочий";
$aAnketa["active"] = false;
$aTable = $aAnketa;

$sOne .= implode ("; ", $aTable) . "
// другий PHP-масив у рядок
$sOne .= $aTable["work"]; // звернення до одного елемента другого масиву

Результат роботи цього прикладу (перший масив - звичайний, ключі в ньому починаються з 0, другий масив - асоціативний, в ньому чотири ключі: "name", "age", "work", "active"):

$sOne = "Петрів; 34; Менеджер; 1
Менеджер";

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

Якщо в організації є підрозділи, або є сезонні робітники, або потрібно окремо виділити пенсіонерів, що працюють, ... конструкція "PHP-масив у масиві" дуже зручна, але ніколи не слід захоплюватися розмірністю. Два-три виміри – межа для ефективного рішення.

Ключі для роботи з масивами

Якщо раніше мало значення, як усе влаштовано, то останніми роками традиції бінарної доби, коли програміст хотів знати, як саме зберігаються елементи масиву, і хотів мати до них прямий доступ, забулися остаточно. З'явилося багато кодувань символів, які займають у пам'яті не один байт. Слово "біт" можна зустріти тепер хіба що в операціях пошуку, але пошук в масиві PHP - це окрема тема. Доступ до елементів може бути простим та асоціативним. У першому випадку елементи масиву (мають будь-який з доступних у PHP типів) нумеруються 0, 1, 2, ... У другому випадку програміст вказує власний індекс, що називається частіше "ключ" для доступу до потрібного значення.

$aLine["фрукт"] = "апельсин"; // тут PHP-ключ масиву = "фрукт"

або (щоб усе було коректно з дотриманням кодування сторінки та коду):

$aLine = iconv ("UTF-8", "CP1251", "апельсин");

При додаванні до масиву $aLine нового значення:

$aLine = iconv ("UTF-8", "CP1251", "персик");
$aLine = iconv ("UTF-8", "CP1251", "огірок");
$aLine = iconv ("UTF-8", "CP1251", "баклажан");

в результаті виконання циклу:

foreach ($aLine as $ck => $cv) (
$cOne.=$ck. "=" . $cv . "
";
}

буде отримано:

фрукт = апельсин
0=персик
овоч = огірок
1 = баклажан

PHP-ключ масиву при додаванні елементів "персик" і "баклажан" формується послідовно від 0, а при вказівці його значення дорівнюватиме цьому значенню.

Видалення елементів з масиву

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

Можна зробити простіше. Якщо до останнього прикладу застосувати:

unset($aLine); // видалити елемент масиву PHP

то результат буде:

фрукт = апельсин
овоч = огірок
1 = баклажан

Варіантів маніпулювання елементами масивів можна сформулювати безліч. Наприклад, використовуючи функції implode() і explode(), можна записати PHP-масив у рядок з одним роздільником, а розібрати назад в інший масив - по іншому роздільнику.

Щоб просто на PHP видалити масив повністю, достатньо написати: unset($aLine);

Цього достатньо.

Пошук у масиві

PHP містить спеціальні функції пошуку та in_array(), проте перш ніж вирішити їх використовувати, слід розглянути можливість виконати пошук у масиві PHP власними силами.

Будь-який проект є конкретними сконструйованими масивами, особливо коли частина семантики перенесена в синтаксис і представлена ​​набором цілком конкретних осмислених ключів. Це дозволяє виконувати власні функції пошуку, які можна позначити осмислено.

У PHP можна викликати функції, ім'я яких визначається під час виконання програми. Дуже практичний приклад із бібліотеки PHPWord, яка дозволяє читати та створювати документи MS Word:

$elements = array("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote",
"Endnote", "CheckBox", "TextBox", "Field", "Line");

$functions = array();

for ($i = 0; $i< count($elements); $i++) {
$functions[$i] = "add" . $elements[$i];
}

В результаті, масив $functions отримає значення масиву $elements, тобто імена реальних функцій, які виконують роботу з реальними елементами документа.

Викликаючи для $elements функцію $functions, можна отримати ідеальний пошук та швидкий результат.

Сортування елементів

Завдання сортування даних має важливе значення, і PHP пропонує кілька функцій для цього: sort(), rsort(), asort(), ksort(), ... За зростанням і зменшенням елементів дві функції зберігають відносини між ключами і значеннями. Іноді можна перемішати значення масиву випадковим чином - shuffle().

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

Найкращий спосіб написати самостійно ідеальне рішення, принаймні на етапі тестування скрипта, - це ручне сортування. Вона допоможе передбачити непередбачені ситуації.

Рядкові масиви

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

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

$cSrcLine = "Text Text ListItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Footnote";

$aSrc = explode(" ", $cSrcLine);
$cDstLine = "";

for ($i=0; $i< count($aSrc); $i++) {
$cFind = "[". $aSrc[$i] . "]";
if (! is_integer(strpos($cDstLine, $cFind)))) (
$cDstLine .= $cFind;
}
}
$aDst = explode("][", $cDstLine);

$cOne = implode("; ", $aDst);

В результаті змінна $cOne отримає тільки ті значення з вихідного рядка, які там зустрічаються по одному разу: "Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Footnote".

Російська мова в ключах та значеннях

Не рекомендується використовувати нічого, що пов'язано з національними кодуваннями, у синтаксичних конструкціях. Російська мова, як і всі інші мови, символи яких виходять за межі a-z, не створюватиме проблем, перебуваючи в області даних, але не в синтаксисі коду. Іноді навіть просте завдання PHP «вивести масив на принтер чи екран» призведе до " кракозябрам " , а частіше просто зупинить скрипт.

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

Синтаксис PHP та оточення мови

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

Правило «у коді є лише код, а на вході, всередині, і на виході є будь-яка інформація» допоможе уникнути непередбачених несподіванок. PHP-значення в масиві може бути "російським", але ключ на нього повинен бути синтаксично коректним не тільки з позицій даної мови, але і з позицій середовища її роботи.

Одна з основних операцій під час роботи з масивами - пошук конкретного значення. Для цього призначено функцію PHP array_search(). Вона здатна обробляти як одновимірні, і асоціативні колекції, повертаючи ключ шуканого значення, якщо його виявлено у масиві.

Синтаксис

Формалізований опис функції array_search() в PHP виглядає так:

Mixed array_search (mixed value, array $collection [, bool strict])

Вхідні параметри:

  • $collection - масив, у якому буде зроблено пошук;
  • value - потрібне значення будь-якого типу;
  • strict – необов'язковий логічний прапор, що встановлює суворий механізм порівняння з урахуванням типів.

Механізм роботи

Функція PHP array_search() по черзі порівнює value з усіма значеннями в масиві collection. За промовчанням, порівняння здійснюється без урахування типів операндів. Цю установку можна змінити, встановивши для прапора strict значення TRUE. Порівняння рядків здійснюється з урахуванням регістру.

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

Якщо збігів не знайдено, функція поверне значення значення FALSE.

Перевіряти повернутий результат слід за допомогою оператора суворої рівності (===). Це важливо, оскільки функція може повернути значення, яке наводиться до FALSE, наприклад, 0 або пустий рядок.

Приклади використання

Приклад 1. При передачі PHP array_search() багатовимірного масиву, результатом роботи буде ключ шуканого елемента.

"winter", "season2" => "spring", "season3" => "summer", "season4" => "autumn"); $result1 = array_search("winter", $array); $result2 = array_search("summer", $array); $result3 = array_search("april", $array); ?>

У цьому прикладі змінна $result1 отримає значення "season1", $result2 дорівнюватиме "season3", а $result3 буде присвоєно булеве значення FALSE, так як рядок "april" не зустрічається у вихідному масиві.

Приклад 2. Функція PHP array_search() може обробляти і одновимірний масив, вважаючи його ключі наступними числовими індексами.

Змінною $result буде присвоєно значення 1, згідно з індексом елемента "мисливець" у масиві $array.

Приклад 3. Можлива помилка під час аналізу результату.

"Washington", 1 => "Adams", 2 => "Jefferson", 3 => "Madison", 4 => "Monroe"); $result = array_search("Washington", $presidents); if (!$result) ( echo "G. Washington не був першим президентом США"; ) ?>

Ось так, не перевіряючи отриманого результату суворою рівністю, можна отримати несподіване повідомлення про те, що Джордж Вашингтон не був першим президентом Сполучених Штатів.

Приклад 4. Повертається ключ першого виявленого збігу.

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

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

Порівняв швидкість пошуку в масиві за допомогою цієї функції зі звичайним перебором масиву в циклах foreach і while. На 10-100 елементах масиву різниця непомітна та й час настільки мало, що їм можна нехтувати. А ось для великих масивів різниця виявилася дуже суттєвою. Зі збільшенням розміру масиву на порядок, значно збільшувався час пошуку. При ста тисячах елементів швидкість foreach падала до 0,013 секунди, а while - до 0,017, при тому, що array_search() теж сповільнився, але все-таки залишився на порядок швидше - 0.004 секунди. Для великого скрипта, що працює з великими масивами, заміна пошуку в циклі на пошук за допомогою array_search() буде зовсім не «блошиною оптимізацією».

У зв'язку з цим згадав недавню дискусію з одним із колег на роботі - щодо того, чи потрібно програмісту знати всі ці вбудовані функції мови, чи достатньо «програмістського складу розуму» та загальних знань. Не вдаючись з міркування про цей самий склад розуму, думаю, що ж знати функції треба, можливо не весь синтаксис в деталях, а хоча б які функції є і що вони в загальних рисах можуть.

UPD: потрібний програмістський склад розуму, теж потрібний! І уважність із пам'яттю не завадять (навіяно break та range:)

Під хабракатом код скрипту, яким підраховував час:

$ Mass = 100000; // Число значень у масиві в якому будемо шукати
$search=50000; // у масиві шукатимемо це значення
$first_result=array(); // масив результатів, для обчислення середнього значення першого варіанта
$second_result=array(); // масив результатів, для обчислення середнього значення другого варіанта
$third_result=array(); // масив результатів, для обчислення середнього значення третього варіанта

// створюємо та наповнюємо масив
$ test_array = range (0, $ mass-1); // дякую SelenIT))

/*
$test_array=array();
for ($i=0; $i<$mass; $i++)
{
$test_array=$i;
}
*/

// цикл для підрахунку середніх значень
for ($d=0; $d<30; $d++) {

//*************** Пошук за допомогою array_search *******************

// Запускаємо підрахунок часу
$time_start = microtime(1);
//Пошук
$key = array_search($search, $test_array, true);
// якщо знайшли
if ($key!==FALSE) // треба саме!== а не!=, адже номер першого елемента - 0
{
echo $test_array[$key];
}
$time_end = microtime(1);
// кінець підрахунку часу

// пишемо в масив значень
$first_result= $time_end - $time_start;

//*************** Пошук по масиву з циклом foreach *******************

// Запускаємо підрахунок часу
$time_start = microtime(1);
// сам пошук
foreach ($test_array as $ta)
{
if ($ta==$search)
{
echo $ta;
break;
}
}
$time_end = microtime(1);
// кінець підрахунку часу

// пишемо в масив значень
$second_result= $time_end - $time_start;

//*************** Пошук по масиву з циклом while *******************

// Запускаємо підрахунок часу
$time_start = microtime(1);

// Визначаємо довжину масиву
$count=count($test_array);
$ j = 0;
// сам пошук
while ($j<$count)
{
if ($test_array[$j]==$search) // якщо знайшли
{
echo $test_array[$j];
break;
}
$j++;
}
$time_end = microtime(1);
// кінець підрахунку часу

// пишемо в масив значень
$third_result= $time_end - $time_start;
}

$srednee1=array_sum ($first_result)/count($first_result);
$srednee2=array_sum ($second_result)/count($second_result);
$srednee3=array_sum ($third_result)/count($third_result);

Printf("перший код виконаний в середньому за: %.7f секунди", $ srednee1);
printf("другий код виконаний в середньому за: %.7f секунди", $ srednee2);
printf("третій код виконаний в середньому за: %.7f секунди", $ srednee3);

//Результат:
// перший код виконано в середньому за: 0.0000295 секунд
// другий код виконано в середньому за: 0.0153386 секунд
// Третій код виконано в середньому за: 0.0226001 секунди



Сподобалася стаття? Поділіться їй