Массив сравнения PHP

Сравнение двух массивов с php5 одинаковыми значениями (дублированными swift-array или нет, с учетом манипулирования php-frameworks типами) может быть выполнено bytearray с помощью array_diff() в обоих направлениях:

!array_diff($a, $b) && !array_diff($b, $a);

Это php-include дает TRUE, если оба массива имеют php-include одинаковые значения (после jsonarray манипуляции типами). FALSE в противном php.ini случае. Примеры:

function array_equal_values(array $a, array $b) {
    return !array_diff($a, $b) && !array_diff($b, $a);
}

array_equal_values([1], []);            # FALSE
array_equal_values([], [1]);            # FALSE
array_equal_values(['1'], [1]);         # TRUE
array_equal_values(['1'], [1, 1, '1']); # TRUE

Как показывает php-frameworks этот пример, array_diff оставляет ключи php.ini массива вне уравнения и не swift-array заботится ни о порядке значений, ни php.ini о том, дублируются ли значения arrays или нет.


Если дублирование php должно иметь значение, это comparison становится более сложной array задачей. Что касается «простых» значений php-frameworks (работают только строковые php-include и целочисленные значения), в php-cli игру вступает array_count_values() для сбора php-cli информации о том, какое значение string-array как часто встречается внутри string-array массива. Эту информацию легко swift-array сравнить с ==:

array_count_values($a) == array_count_values($b);

Это дает TRUE, если php-cli оба массива имеют одинаковые comparison значения (после манипуляции character-arrays типами) в течение одного arrays и того же времени. FALSE в противном php.ini случае. Примеры:

function array_equal_values(array $a, array $b) {
    return array_count_values($a) == array_count_values($b);
}

array_equal_values([2, 1], [1, 2]);           # TRUE
array_equal_values([2, 1, 2], [1, 2, 2]);     # TRUE
array_equal_values(['2', '2'], [2, '2.0']);   # FALSE
array_equal_values(['2.0', '2'], [2, '2.0']); # TRUE

Это можно swift-array дополнительно оптимизировать, сравнив php5 вначале количество двух массивов, что php-mail относительно дешево, и быстро php проведя проверку, позволяющую character-arrays отличить большинство массивов php-cli друг от друга, когда подсчет swift-array дублирования значений имеет php значение.


Эти примеры пока php-include частично ограничены строковыми arrays и целочисленными значениями, а php-frameworks также невозможно строгое string-array сравнение с array_diff. Для строгого php-mail сравнения более подходит arrays array_search. Значения необходимо подсчитывать swift-array и индексировать, чтобы их php-fpm можно было сравнивать, поскольку string-array простое превращение их в bytearray ключ (как это делает array_search) не comparison поможет.

Это немного больше jsonarray работы. Однако в итоге сравнение php5 такое же, как и раньше:

$count($a) == $count($b);

Главное jsonarray отличие $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;
    };

При этом сохраняется php5 таблица значений, так что bytearray оба массива могут использовать swift-array один и тот же индекс. Также php можно выйти раньше первого string-array раза, когда во втором массиве php-cli обнаружено новое значение.

Эта swift-array функция также может добавлять php5 контекст strict, имея дополнительный php-include параметр. А добавление еще php-include одного дополнительного параметра array позволило бы включить поиск php.ini дубликатов или нет. Полный string-array пример:

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', 2]);                                    # TRUE
array_equal_values([2], ['2', 2], FALSE);                             # TRUE
array_equal_values([2], ['2', 2], FALSE, TRUE);                       # FALSE

php

arrays

comparison

2022-10-08T14:25:57+00:00