У меня есть этот массив:
$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 для вставки после этого.
Может ли кто-нибудь указать мне правильное направление, как различать значения моего массива?
Это должно работать для вас:
($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 ) )
Исходя из двумерного массива, вам потребуется:
$array = array_map('array_unique', $array);
Или, если вам не нужен двухмерный массив, просто используйте:
$array = [
'a' => $a,
'b' => $b,
];
А потом: $array = array_unique($array);
Одна вещь, не упомянутая, состоит в том, что массивы встроены в уникальные, если вы можете управлять ключами для них самостоятельно. Ассоциативные массивы могут иметь ключ только один раз. Поэтому мне нравится использовать первичный ключ или уникальный идентификатор для ключа.
Вы не можете иметь массив с такими же ключами, как этот.
array(
'a' => $a
'a' => $b
)
Потому что ключ a
это уже уникальный идентификатор. Если вы будете следовать.