Разделы сайта
Выбор редакции:
- Тест по информатике на тему алгоритмы Тест по теме алгоритм с ветвлением
- Список русскоязычных социальных сетей
- Статусы в скайпе про любовь
- Как найти копии на Алиэкспресс?
- Кто такой верстальщик и чем он занимается Должностная инструкция верстальщика
- Прошивка Lineage OS: обзор и установка новейшей ОС Установка обновлений при помощи ROM Manager
- Как правильно совмещать контакты Google и iCloud на iPhone
- Отличия одноплатных компьютеров Orange pi и Raspberry pi, что купить?
- Получаем настраиваемые экранные кнопки Home, Back и Menu на любом Android девайсе (Floating Soft Keys) Кнопки назад домой на андроид
- Обзор Mi Band Pulse (1S) и сравнение с оригинальным Mi Band
Реклама
Php быстрое сравнение массивов. Массив сравнения PHP |
И операторов массивов:
Пример сравнения массивов: Некоторы полезные практические примеры по работе с массивами // это // полностью соответствует
$b
=
"a"
; Еще один практический пример: // Массив как карта (свойств) // исключительно числовые ключи
$switching
= array(10
,
// ключ = 0 // пустой массив Коллекция: $colors = array("красный" , "синий" , "зеленый" , "желтый" ); Foreach ($colors
as
$color
) { Результат работы рассмотренного скрипта: Вам нравится красный? Вам нравится синий? Вам нравится зеленый? Вам нравится желтый? Следующий пример создает начинающийся с единицы массив:
$firstquarter
= array(1
=>
"Январь"
,
"Февраль"
,
"Март"
); ?> Результат работы приведенного скрипта будет следующий: Пример заполнения массива: // заполняет массив всеми элементами директории Массивы упорядочены. Вы можете изменять порядок элементов, используя различные функции сортировки. Для дополнительной информации смотрите раздел функции для работы с массивами . Вы можете подсчитать количество элементов в массиве, используя функцию count() . Рекурсивные и многомерные массивы:
$fruits
= array ("фрукты"
=> array ("a"
=>
"апельсин"
, // Несколько примеров доступа к значениям предыдущего массива
// Создаст новый многомерный массив Обратите внимание, что при присваивании массива всегда происходит копирование значения. Чтобы копировать массив по ссылке, вам нужно использовать оператор ссылки:
$arr1
= array(2
,
3
);
$arr3
= &
$arr1
; Мы рассмотрели основные возможности по работе с массивами. Некоторую дополнительную информацию вы можете найти в разделе "Работа с переменными " статей по PHP.
» Сравнение массивов в PHP Сравнение массивов производится с помощью привычных для нас операторов отношений. Наибольший интерес в этом плане вызывают операторы равенства (==) и эквивалентности (===). Массивы считаются равными, в том случае, если каждый элемент одного массива имеет один равный ему во втором, и наоборот. Равенство элементов подразумевает соответственно совпадение ключа и значения. Порядок расположения элементов при этом не играет роли (листинг 8.12). Листинг 8.12. Сравнение массивов.
‹html› Заметьте, что индексы второго массива находятся в двойных кавычках, а значит имеют тип String. Но в данном случае сравниваются значения, а не типы, поэтому программа все равно выведет сообщение о равенстве массивов. То же самое относится к значениям элементов в массиве. Иначе дело обстоит с оператором эквивалентности, который требует от своих операндов не только равенства значений, но и одинаковый порядок следования элементов в массиве (листинг 8.13). Листинг 8.13. Эквивалентность массивов.
‹html› В этом случае программа выведет, что массивы неэквивалентны. Наряду с разобранными операторами существуют также операторы неравенства (!=) и неэквивалентности (!==), которые работают аналогично, но результат выполнения будет противоположный. Сравнение двух массивов с одинаковыми значениями (дублируемыми или нет, с учетом ввода-манипуляции) может быть выполнено с помощью array_diff() в оба направления: Array_diff($a, $b) && !array_diff($b, $a); Это дает TRUE , если оба массива имеют одинаковые значения (после манипуляции с типом). FALSE в противном случае. Примеры: Function array_equal_values(array $a, array $b) { return !array_diff($a, $b) && !array_diff($b, $a); } array_equal_values(, ); # FALSE array_equal_values(, ); # FALSE array_equal_values(["1"], ); # TRUE array_equal_values(["1"], ); # TRUE Как показывает этот пример, array_diff оставляет ключи массива из уравнения и не заботится о порядке значений и ни о том, что значения дублируются, либо нет. Если дублирование должно иметь значение, это становится более сложным. Что касается "простых" значений (работают только строковые и целочисленные значения), array_count_values() входит в игру для сбора информации о том, какое значение как часто внутри массива. Эта информация легко сравнивается с == : Array_count_values($a) == array_count_values($b); Это дает TRUE , если оба массива имеют одинаковые значения (после манипуляции с типом) за такое же количество времени. FALSE в противном случае. Примеры: Function array_equal_values(array $a, array $b) { return array_count_values($a) == array_count_values($b); } array_equal_values(, ); # TRUE array_equal_values(, ); # TRUE array_equal_values(["2", "2"], ); # FALSE array_equal_values(["2.0", "2"], ); # TRUE Это может быть дополнительно оптимизировано путем сравнения количества первых двух массивов, которое является относительно дешевым, и быстрого теста, чтобы рассказать большинству массивов обособленно, если подсчет дублирования значений имеет значение. Эти примеры до сих пор частично ограничены строковыми и целочисленными значениями, и строгое сравнение с array_diff невозможно. Более строгое сравнение для array_search . Таким образом, значения нужно подсчитывать и индексировать так, чтобы их можно было сравнить, просто превратив их в ключ (как это делает array_search). Это немного больше работы. Однако в итоге сравнение будет таким же, как и раньше: $count($a) == $count($b); Это просто $count , что делает разницу: $table = ; $count = function (array $array) use (&$table) { $exit = (bool)$table; $result = ; foreach ($array as $value) { $key = array_search($value, $table, true); if (FALSE !== $key) { if (!isset($result[$key])) { $result[$key] = 1; } else { $result[$key]++; } continue; } if ($exit) { break; } $key = count($table); $table[$key] = $value; $result[$key] = 1; } return $result; }; Это сохраняет таблицу значений, чтобы оба массива могли использовать один и тот же индекс. Также возможно выйти с первого раза в первый раз во втором массиве с новым значением. Эта функция также может добавить строгий контекст, добавив дополнительный параметр. И добавив еще один дополнительный параметр, вы можете позволить искать дубликаты или нет. Полный пример: Function array_equal_values(array $a, array $b, $strict = FALSE, $allow_duplicate_values = TRUE) { $add = (int)!$allow_duplicate_values; if ($add and count($a) !== count($b)) { return FALSE; } $table = ; $count = function (array $array) use (&$table, $add, $strict) { $exit = (bool)$table; $result = ; foreach ($array as $value) { $key = array_search($value, $table, $strict); if (FALSE !== $key) { if (!isset($result[$key])) { $result[$key] = 1; } else { $result[$key] += $add; } continue; } if ($exit) { break; } $key = count($table); $table[$key] = $value; $result[$key] = 1; } return $result; }; return $count($a) == $count($b); } Примеры использования: Array_equal_values(["2.0", "2", 2], ["2", "2.0", 2], TRUE); # TRUE array_equal_values(["2.0", "2", 2, 2], ["2", "2.0", 2], TRUE); # TRUE array_equal_values(["2.0", "2", 2, 2], ["2", "2.0", 2], TRUE, FALSE); # FALSE array_equal_values(["2"], ["2"], TRUE, FALSE); # TRUE array_equal_values(, ["2", 2]); # TRUE array_equal_values(, ["2", 2], FALSE); # TRUE array_equal_values(, ["2", 2], FALSE, TRUE); # FALSE |
Читайте: |
---|
Популярное:
Как сделать яндекс стартовой страницей |
Новое
- Список русскоязычных социальных сетей
- Статусы в скайпе про любовь
- Как найти копии на Алиэкспресс?
- Кто такой верстальщик и чем он занимается Должностная инструкция верстальщика
- Прошивка Lineage OS: обзор и установка новейшей ОС Установка обновлений при помощи ROM Manager
- Как правильно совмещать контакты Google и iCloud на iPhone
- Отличия одноплатных компьютеров Orange pi и Raspberry pi, что купить?
- Получаем настраиваемые экранные кнопки Home, Back и Menu на любом Android девайсе (Floating Soft Keys) Кнопки назад домой на андроид
- Обзор Mi Band Pulse (1S) и сравнение с оригинальным Mi Band
- Vertex - новая марка телефонов и смартфонов уже в России