Nano Hash - криптовалюты, майнинг, программирование

Удалить повторяющиеся значения, полностью удаленные из массива в php

Я хочу удалить значения из массива, которые одинаковы. Например: Это массив.

Array ( [0] => 1 [1] => 63 [2] => 1 )

есть ли какая-либо функция или что-то в ядре php, которые возвращают мне только значение, которое не дублируется, то есть значение с номером индекса 1 и удаляет индекс 0 и 2, я хочу результат

Array ( [1] => 63) 

Там в любом случае?


  • $массив = массив_значений($массив); 16.04.2018
  • @KoenHollander - Как эта функция поможет ОП? В этом случае он должен снова дать вам идентичный массив. 16.04.2018
  • Извините, я не знал, что вы хотите удалить все экземпляры дубликата. Я нашел еще один вопрос, который выглядит так же, как и ваш: stackoverflow.com/questions/3691369/ 16.04.2018

Ответы:


1

Вы можете использовать array_filter() и array_count_values(), чтобы проверить, что количество не превышает 1.

<?php
$data = [1, 63, 1];

$data = array_filter($data, function ($value) use ($data) {
    return !(array_count_values($data)[$value] > 1);
});

print_r($data);

https://3v4l.org/uIVLN

Результат:

Array
(
    [1] => 63
)

Также будет хорошо работать с несколькими дубликатами: https://3v4l.org/eJSTY.

16.04.2018

2

Один из вариантов — использовать array_count_values для подсчета значений. Зациклить и нажать только значения 1

$arr = array(1,63,1);
$arrKey = array_flip( $arr ); //Store the key

$result = array();  
foreach( array_count_values($arr) as $k => $v ) {
    if ( $v === 1 ) $result[ $arrKey[$k] ] = $k;
}

echo "<pre>";
print_r( $result );
echo "</pre>";

Это приведет к:

Array
(
    [1] => 63
)

Документ: array_count_values

16.04.2018
  • Значения являются динамическими. Теперь, как мне назначить ключ значением в другом массиве. Потому что я должен сохранить этот уникальный массив обратно в базу данных 16.04.2018
  • @MohammadFaizanZafar - я сохранил ключ в $arrKey. Можно использовать array_flip, потому что вам нужны только уникальные значения. 16.04.2018
  • Я считаю, что этот ответ самый умный из всех. Всегда избегайте повторных вызовов функций, когда это возможно, это делает подход очень масштабируемым. Когда ввод становится очень большим, он мгновенно уплотняется одноразовым вызовом array_count_values(). Кэширование перевернутого ввода также очень разумно. Единственное, что меня беспокоит — и оно невелико, — это то, что я читал, что размещение функции в качестве входных данных цикла foreach влияет на производительность. Я не знаю, так ли это в данном случае, и я знаю, что это улучшает краткость кода, но, возможно, его лучше объявить перед циклом. Отличный ответ. 27.04.2018

  • 3

    Я считаю, что лучшим решением является следующее:

    function removeDuplicates(array $initialArray) : array 
    {
        // Remove duplicate values from an array
        $uniqueValues = array_unique($initialArray);
    
        // Computes the difference of arrays with additional index check
        $duplicateValues = array_diff_assoc($initialArray, $uniqueValues);
    
        // Removed any values in both arrays
        return array_diff($uniqueValues, $duplicateValues);
    }
    

    Это решение использует следующие функции в PHP:

    array_unique

    array_diff_asoc

    array_diff

    16.04.2018

    4

    Вы можете использовать array_keys() со значением поиска в качестве второго параметра. чтобы увидеть, сколько раз значение существует.

    $array = [1, 63, 1, 12, 64, 12];
    
    $new = [];
    foreach ($array as $value) {
        // Get all keys that have this value. If there's only one, save it.
        if (count(array_keys($array, $value)) == 1) {
            $new[] = $value;
        }
    }
    

    Демонстрация: https://3v4l.org/G1DCg

    Я не знаю производительности этого по сравнению с другими ответами. Я оставляю профилирование кому-то другому.

    16.04.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..