Ошибка с array_unique

Что я делаю не так с этим? Если я просто запустите это:

$region = EM_Locations::get(array('orderby'=>'region_name'));

все хорошо. Однако, когда я добавляю в array_unique:

$region = EM_Locations::get(array('orderby'=>'region_name'));
$reg = array_unique($region)

Он ломается и получает "EM_Location не может быть преобразован в строку"

2 ответа

Решение

array_unique() сортирует значения, которые обрабатываются как строки, два элемента считаются равными тогда и только тогда, когда (строка) $elem1 === (строка) $elem2.

Вы можете добавить метод __toString() для EM_Location учебный класс.

Из документации для array_unique:

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

Это означает, что значения должны быть преобразованы в строку для сравнения, но ваши значения имеют тип EM_Location, который PHP не может понять, как преобразовать в строку.

Другие вопросы по тегам