Intereting Posts
Не удалось утверждать, что статус HTTP равен 200 не 500 Количество число последовательных посещений файл поврежден, когда щелкните ссылку для загрузки Умышленно медленная загрузка страницы HTML / PHP для тестирования как читать файлы, сохраненные на сервере, используя php и совершать вызовы на эту php-страницу, используя ajax для отображения списка файлов Динамический выпадающий список для разных стран, штатов, географических местоположений? Laravel hasMany Many to Many to One Eloquent Элементы формы не отображаются? Есть ли простой способ читать имена файлов в каталоге и добавлять в массив? В Laravel, как groupBy Url без параметра в запросе Получить дату следующего понедельника, вторник и т. Д. Как имитировать поведение автоматической привязки StackOverflow PHP Регулярное выражение со стрелками (>>) netbeans xdebug ждет подключения, несмотря на все ответы на форуме 413 Слишком сложная задача запроса – проблема с отправкой файлов

Встроенная поддержка наборов в PHP?

Я ищу простой способ создания массива в php, который не позволит дублировать записи, но позволяет легко комбинировать другие наборы или массивы.

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

    Просто идея, если вы используете ключи массива вместо значений, вы будете уверены, что дубликатов нет, также это позволяет легко слить два «набора».

     $set1 = array ('a' => 1, 'b' => 1, ); $set2 = array ('b' => 1, 'c' => 1, ); $union = $set1 + $set2; 

    Найдено решение: array_unique

    Просто добавьте элементы в массив, а затем вызовите array_unique чтобы удалить дубликаты, что в конечном итоге достигает такого же эффекта. Единственный недостаток – вы должны помнить, чтобы назвать это. Было бы лучше, если бы был настоящий класс, чтобы справиться с этим, но это хорошо для моих целей.

    Вы можете использовать array_combine для удаления дубликатов

     $cars = array("Volvo", "BMW", "Toyota"); array_push($cars,"BMW"); $map = array_combine($cars, $cars); 

    У меня также была эта проблема, поэтому я написал класс: https://github.com/jakewhiteley/php-set-object

    Как и было предложено, он расширяет и ArrayObject и допускает встроенную вставку / итерацию / удаление значений, но без использования array_unique() любом месте.

    Реализация основана на MDN JS Docs for Sets в EMCA 6 JavaScript.

    В Laravel есть метод, unique в классе Collection который может быть полезен. Из документации Laravel:

     $collection = collect([1, 1, 2, 2, 3, 4, 2]); $unique = $collection->unique(); $unique->values()->all(); // [1, 2, 3, 4]