Более элегантный способ получить массив с различными значениями

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

$array[] = [
'a' => $a,
'b' => $b,
];

Массив содержит, скажем, 10 записей, $ a может быть там с одним и тем же значением много раз, и мне нужна только одна из этих записей для вставки в БД.

Я не могу заставить работать array_unique

 array to string conversion

ошибка при попытке использовать его как

 $result = array_unique($array);

Теперь я сделал небольшой цикл foreach, который кажется неправильным:

    $z = [];
foreach ($array as $x) {

if (@!in_array($x['a'],$z)) {
$z[] = $x['a'];
}
}

и я использую $ z для вставки после этого.

Может ли кто-нибудь указать мне правильное направление, как различать значения моего массива?

2

Решение

Это должно работать для вас:

($result = array_unique($array); это не сработало, потому что у вас есть многомерный массив!)

<?php//Example data
$array[] = [
'a' => 1,
'b' => 1,
'c' => 1,
'd' => 2,
'e' => 2,

];

$array = array_map("array_unique", $array);
print_r($array);

?>

Выход:

Array ( [0] => Array ( [a] => 1 [d] => 2 ) )
3

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

Исходя из двумерного массива, вам потребуется:

$array = array_map('array_unique', $array);

Или, если вам не нужен двухмерный массив, просто используйте:

$array = [
'a' => $a,
'b' => $b,
];

А потом: $array = array_unique($array);

1

Одна вещь, не упомянутая, состоит в том, что массивы встроены в уникальные, если вы можете управлять ключами для них самостоятельно. Ассоциативные массивы могут иметь ключ только один раз. Поэтому мне нравится использовать первичный ключ или уникальный идентификатор для ключа.

Вы не можете иметь массив с такими же ключами, как этот.

array(
'a' => $a
'a' => $b
)

Потому что ключ a это уже уникальный идентификатор. Если вы будете следовать.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector