Ошибка с array_unique - PullRequest
       50

Ошибка с array_unique

1 голос
/ 02 ноября 2011

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

$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 ]

1 голос
/ 02 ноября 2011

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

Вы можете добавить __ toString () метод для класса EM_Location.

1 голос
/ 02 ноября 2011

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

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

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

...