Php поиск значения ключа в многомерном массиве. Как проверить наличие значения в массиве php. Проверка наличия значения в массиве. Функция array_search()

Поиск значения в массиве требуется практически в каждом PHP приложении, скрипте работающим с данными, для чего существует множество способов и специальных функций. В зависимости от задачи и типа поиска следует использовать те или иные инструменты, учитывая их особенности, скорость выполнения и удобство в применении. Далее мы ознакомимся с PHP функциями поиска элементов в массиве, возможными конструкциями и методами, а также выясним какой способ наиболее быстрый.

Функции для поиска в массиве :
array_search — служит для поиска значения в массиве. В случае удачи она возвращает ключ искомого значения, если ничего не найдено — возвращает FALSE. До версии PHP 4.2.0, array_search() при неудаче возвращала NULL, а не FALSE.

Синтаксис функции mixed array_search (mixed needle, array haystack [, bool strict]).

foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement

Пример использования функции с конструкцией foreach для поиска элемента массива, возвращает TRUE при успехе

Синтаксис конструкции
while (expr)
statement

Возвращает ключ элемента массива при успехе

Из приведенной таблицы замеров видно, что функция array_search , показывает наилучший результат как при поиске в малых так и больших массивах. При этом время поиска спомощью циклов значительно увеличивается в зависимости от размера массива.

Программирование - это синтаксис и семантика. Первое определяется правилами языка, второе - опытом разработчика. В отношении массивов разработчик может предметно нагрузить синтаксис семантикой. Это еще не объект, но уже не массив в традиционном понимании. PHP дает возможность создавать массивы из переменных различных типов, включая самих себя. Элементом массива может быть функция, то есть возможность нагрузить массив реальным алгоритмом, реальным смыслом.

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

Конструирование массивов

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

public $aNone = array(); // массив описан и ничего не содержит

public $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 was not the first president of the USA"; } ?>

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

Пример 4. Возвращается только ключ первого обнаруженного совпадения.

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

Зачастую при написании кода необходимо проверить существует ли то или иное значение элемента в массиве. Сегодня мы рассмотрим несколько функций, при помощи которых это можно сделать.

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

Мы можем получать различные массивы из нашей базы данных и проверять наличие того или иного значения в нем. Искомое значение может передаваться и от пользователя нашего скрипта, когда он, например, что-то ищет. По результатам такого поиска можно совершать определенные действия. Все зависит от конкретно поставленной задачи, однако, алгоритмы поиска значения в массиве будут одними и теми же.

Сегодня мы их рассмотрим.

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

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

Если результат ее работы удачный и искомый элемент в массиве найден, то функция вернет true , то есть «правду».

Функция принимает 2 обязательных параметра: <Что ищем> и <Где ищем>.

Также она может принимать еще один необязательный параметр: <Тип данных>. Если этот третий необязательный параметр имеет значение true , тогда проверяется еще и тип данных. То есть ‘2’ и 2 будет не одно и то же. В первом случае – это строка, во втором – число. И тогда уже вся функция in_array() не вернет значение true .

Также нужно помнить, что функция осуществляет сравнение с учетом регистра символов.

Давайте рассмотрим работу этой функции на простом примере.
Нам нужен какой-нибудь массив. При помощи функции проверим наличие значения в массиве и выведем на экран определенное сообщение.

Отработав функция выведет на экран сообщение «Yes», так как элемент «Marina» в нашем массиве присутствует.

Поменяйте первый параметр в функции на какой-либо несуществующий элемент, и Вы увидите сообщение «No».

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

Существует и еще одна функция для поиска array_search() , которая в отличие от предыдущей будет возвращать ключ найденного элемента. Это в свою очередь может пригодиться, если мы работаем с ассоциативным массивом.

Функция принимает те же параметры, что и предыдущая. При этом третий параметр также является необязательным.

Давайте посмотрим, как ее можно использовать, работая с ассоциативным массивом.

"october","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 as $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!».

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

Вот и все на сегодня! Надеюсь, урок был понятен и полезен! Попробуйте сами написать подобный код, чтобы разобраться во всем окончательно.

А я жду Ваших комментариев.

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

Желаю Вам успешного программирования!

С Вами была Анна Котельникова!

Я уже достаточно долго использую функцию 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 секунды

КАТЕГОРИИ

ПОПУЛЯРНЫЕ СТАТЬИ

© 2024 «minomin.ru» — Сайт о компьютерах, и работе в интернете