Удалить дубликаты из массива php (не array_unique)

У меня есть такой массив:

Array(
[0] => Array(
[id] => 1
[name] => name1
[table] => warehouse)
[1] => Array(
[id] => 2
[name] => name2
[table] => warehouse)
[2] => Array(
[id] => 3
[name] => name1
[table] => kitchen)
[3] => Array(
[id] => 4
[name] => name5
[table] => kitchen)
)

и я хочу получить этот результат. array_unique не будет работать, потому что есть только одно и то же значение, и я хочу отсортировать только по имени. ID и таблицы могут быть одинаковыми.

Array(
[0] => Array(
[id] => 1
[name] => name1
[table] => warehouse)
[1] => Array(
[id] => 2
[name] => name2
[table] => warehouse)
[3] => Array(
[id] => 4
[name] => name5
[table] => kitchen))

1

Решение

Попробуй это

$data = Array(
[0] => Array(
[id] => 1
[name] => name1
[table] => warehouse)
[1] => Array(
[id] => 2
[name] => name2
[table] => warehouse)
[2] => Array(
[id] => 3
[name] => name1
[table] => kitchen)
[3] => Array(
[id] => 4
[name] => name5
[table] => kitchen)
);

$record = array();
$name = array();
foreach($data as $key=>$value){
if(!in_array($value['name'], $name)){
$name[] = $value['name'];
$record[$key] = $value;
}

}
print_r($record);
3

Другие решения

Если вы не используете vanilla-PHP, вы можете сделать это, используя узо-лакомство библиотека:

$uniqueByName = Arrays::uniqueBy($array, 'name');
2

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

$new = [];
foreach($array as $a) $new[$a['name']] = $a;
print_r($new);

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

1

с 2 оператором foreach вы можете сделать это так ..

давай назови что-нибудь …

$arr1 = array("shayan","ali","shayan","maziar","pezhman","ali");
$arr2 = array();

foreach($arr1 as $element1)
{
foreach($arr1 as $element2)
{
if ($element1 != $element2 && !in_array($element1,$arr2))
{
array_push($arr2,$element1);
}
}
}
print_r($arr2);

Надеюсь, поможет <3

0

Ты можешь использовать ArrayHelper в комплекте с Yii фреймворк.

$array = array_values(ArrayHelper::index($array, 'name'));

0
По вопросам рекламы [email protected]