Как я могу удалить дубликат ключа и значения из нескольких массивов - PullRequest
0 голосов
/ 10 июня 2019

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

массив пытается удалить "mfgg_name", если встречается более 1 раза

array:44 [▼
 0 => array:4 [▼
   "mfgg_name" => "Solomon Colors, Inc."
   "mfgg_id" => 122
   "product_name" => "Lythic Protector"
   "product_id" => 2586
 ]
 1 => array:4 [▼
   "mfgg_name" => "Solomon Colors, Inc."
   "mfgg_id" => 122
   "product_name" => "Lythic SPD Protector"
   "product_id" => 2587
 ]
 2 => array:4 [▼
   "mfgg_name" => "Solomon Colors, Inc."
   "mfgg_id" => 122
   "product_name" => "Lythic Cleaner"
   "product_id" => 2588
 ]
 3 => array:4 [▼
   "mfgg_name" => "Solomon Colors, Inc."
   "mfgg_id" => 122
   "product_name" => "Lythic DAY1 Hardener"
   "product_id" => 2589
 ]

     @if(count($list_all_active_manufacturers) > 0 ) 

                                 {{dd($list_all_active_manufacturers)}}
                                    @foreach($list_all_active_manufacturers as $leedsManufacturer)
                                <div class="post" id="post{{$leedsManufacturer['mfgg_id']}}">
                                    <label class=" my-checkbox gry2" id="manufacturer">{{str_limit($leedsManufacturer['mfgg_name'], 300)}}
                                        <input type="checkbox" class="manufacturer common_selector" name="manufacturer[]" value="{{$leedsManufacturer['mfgg_id']}}">
                                        <span class="checkmark"></span>
                                    </label>
                                </div>

                                    @endforeach 
                                @endif

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вы можете использовать эту функцию,

function unique_multidim_array($array, $key)
{
    $temp_array = [];
    $i          = 0;
    $key_array  = [];
    foreach ($array as $val) {
        if (!in_array($val[$key], $key_array)) {
            $key_array[$i]  = $val[$key];
            $temp_array[$i] = $val;
        }
        $i++;
    }
    return $temp_array;
}
// unique by mfgg_name
$result = unique_multidim_array($yourArr,'mfgg_name'); 
0 голосов
/ 10 июня 2019

, вероятно, есть лучшие ответы, но это то, что я хотел бы сделать, основываясь на качестве данных -

foreach ($test as $key => $value) {
    unset($test[$key + 1]['mfgg_name']);
}

то, что он делает, это сохраняет имя первым массивом, но удаляетпотом для всех массивов - тогда я бы сделал isset(), чтобы проверить, существует ли на выходе

@if(count($list_all_active_manufacturers) > 0 ) 
    @foreach($list_all_active_manufacturers as $leedsManufacturer)
        <div class="post" id="post{{$leedsManufacturer['mfgg_id']}}">
            @if(isset($leedsManufacturer['mfgg_id]))
                <label class=" my-checkbox gry2" id="manufacturer">{{str_limit($leedsManufacturer['mfgg_name'], 300)}}
                <input type="checkbox" class="manufacturer common_selector" name="manufacturer[]" value="{{$leedsManufacturer['mfgg_id']}}">
                <span class="checkmark"></span>
                </label>
            @endif
        </div>
     @endforeach 
@endif

, это не проверено, но может привести вас на правильный путь - если isset() не делаетВы можете попробовать ($leedsManufacturer['mfgg_name'] > 0) или @if(array_key_exists('mfgg_name', $leedsManufacturer)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...