PHP Checkif два массива имеют одинаковые ключи и одинаковое количество ключей

Я пытаюсь сопоставить 2 массива, которые выглядят так, как показано ниже.

$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);

Моя проблема в том, что мне нужно, чтобы ключи массива обоих массивов имели одинаковое значение и одинаковый счет.

Что значит:

// passes - both arrays have the same key values and same counts of each key
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);

// fails - $public does not have 'blue' => 1
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('red' => 2, 'green' => 3, 'purple' => 4);

// should fail - $public has 2 'blue' => 1 
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);

Я пытался использовать array_diff_keys, array_diff и другие функции php, но ни одна из них не может поймать дополнительные ключи с тем же значением (т.е. если «синий» => 1 повторяется, он все еще проходит)

Какой хороший способ решить эту проблему?

Ваш последний массив $public недействителен, у вас не может быть двух ключей blue в массиве. Если вы var_export(array('blue' => 1, 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4)) вы получите array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4)

Nick 19.02.2019 05:53

@SougataBose, почему ты удалил свой ответ, это правильно ...

Nick 19.02.2019 05:56

эта проблема не может быть решена с помощью php, так ведет себя php, php получает последнее значение отдельного ключа

Beginner 19.02.2019 06:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
568
1

Ответы 1

Когда вы пишете два значения с одним и тем же ключом в PHP, второе перезапишет значение из первого (и это не ошибка). Ниже показано, что я сделал в интерактивном CLI PHP (запустите его с помощью php -a):

php > $x = ["x" => 1, "x" => 2, "y" => 2];
php > var_dump($x);
array(2) {
  ["x"]=>
  int(2)
  ["y"]=>
  int(2)
}

Итак, array_diff, кажется, работает правильно. Вы просто ожидаете, что PHP будет вести себя не так, как на самом деле!

Другие вопросы по теме