Проблема с array_unique - PullRequest
       11

Проблема с array_unique

0 голосов
/ 10 августа 2010
print_r($tokens);
$tokens = array_unique($tokens);
print_r($tokens);

Дает следующий вывод:

Array
(
    [0] => Array
        (
            [Class_ID] => 32709
        )

    [1] => Array
        (
            [Class_ID] => 34682
        )

    [2] => Array
        (
            [Class_ID] => 34818
        )

)
Array
(
    [0] => Array
        (
            [Class_ID] => 32709
        )

)

Я не хочу, чтобы это что-то меняло с помощью этого array_unique, так как значения Class_ID разные ... как дела?

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

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

Примечание: Два элемента считаются равными тогда и только тогда, когда

(string) $elem1 === (string) $elem2

Словами:когда строковое представление одинаково.Будет использован первый элемент.

Все ваши элементы toString Array.

0 голосов
/ 11 августа 2010

Найдена функция из php.net, которая выполняет array_unique для многомерных массивов:

function super_unique($array) //array unique for multi 
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
...