Здравствуйте. Есть такой массив $array
array(100) {
[0]=>
array(2) {
["id"]=>
int(12345)
["date"]=>
int(277345533)
[1]=>array(2)
//такие же ключи(id, date)
[2]=>array(2)
//такие же ключи(id, date)
[3]//... ну и так далее
Мне нужно убрать(или присвоить null), все элементы, у которых совпадает id(т.е. Если есть 3 элемента с одинаковым id, должен остаться только один). Я пробовал применять функцию array_unique()
$newarr=array_unique($array);
Но в массиве $newarr я получаю всего пару элементов из 100, хотя повторений одно-два, а то и вообще нет. Что я делаю не так?
Ответ
Возможно, вам стоит передавать в качестве второго параметра array_unique константу SORT_REGULAR вот так
$newarr=array_unique($array, SORT_REGULAR);
Согласно документации, по умолчанию используется SORT_STRING, который сравнивает элементы как строки.
Если же вам нужно получать unique результаты только учитывая одно поле массива id, можете воспользоваться такой функцией, которая тоже есть в документации
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = 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;
}
вызываете вот так
$newarr=unique_multidim_array($array, 'id');
Комментариев нет:
Отправить комментарий