Добавление в массив, если значение не существует

У меня есть массив, созданный из файла журнала, и я хочу создать новый массив, содержащий только имена игроков.

$list[2] — расположение имен игроков

             if (preg_match_all('/^(.*?) Player "(.*)" (.*) /m', $open, $list))
                {
                     foreach($list[2] as $name)
                     {
                        if (!in_array($name,$players))
                        {
                         $players[] = ["Player"=>$name];
                        }
                     }
                 }
                var_dump($players);

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

** Отвечать ** Было решено после предложенного ответа с помощью

  $gt = array_unique($list[2]);
    foreach($gt as $name)
     {
      $players[] = ["Player"=>$name];
     }
$players[$name] = TRUE; может сработать.. не похоже, что Player понадобится.
user3783243 05.05.2022 15:45

Ваша текущая проблема задокументирована здесь, stackoverflow.com/questions/4128323/…

user3783243 05.05.2022 15:49

Этот повторяющийся вопрос не является хорошим «указателем», потому что нет минимальный воспроизводимый пример. Намерение достаточно ясно для программистов, которые понимают ваш код, но с точки зрения качества контента было бы лучше иметь образец ввода и точный желаемый результат. Пожалуйста, никогда не добавляйте редактировать в свой вопрос "ответ" - это не задача вопроса. Вы можете избежать вызова array_unique(), если вы выполняете ассоциативный толчок $players[$name] = ["Player" => $name];, потому что дубликаты ключей на одном уровне массива не допускаются (они будут перезаписаны).

mickmackusa 06.05.2022 05:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать функцию array_uniquehttps://www.php.net/manual/en/function.array-unique.php

             if (preg_match_all('/^(.*?) Player "(.*)" (.*) /m', $open, $list))
                {
                     foreach($list[2] as $name)
                     {
                         $players[] = ["Player"=>$name];
                     }
                 }
                $players=array_unique($players);
                var_dump($players);

другое решение:

             if (preg_match_all('/^(.*?) Player "(.*)" (.*) /m', $open, $list))
                {
                     foreach($list[2] as $name)
                     {
                        if (!in_array(["Player"=>$name],$players))
                        {
                         $players[] = ["Player"=>$name];
                        }
                     }
                 }
                $players=array_unique($players);
                var_dump($players);

Пожалуйста, отметьте / проголосуйте, чтобы закрыть повторяющиеся вопросы вместо того, чтобы отвечать на них. Когда вы отвечаете на повторяющиеся вопросы, роботу Roomba становится сложнее выполнять свою важную работу. Мне нужно воспользоваться этим моментом, чтобы испортить романтику — в 2022 году, когда кто-то задает простой вопрос, обычно есть как минимум 5 дубликатов на выбор. Итак, еще раз, пожалуйста, не отвечайте на простые повторяющиеся вопросы.

mickmackusa 06.05.2022 05:16

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