Некоректно сортиране с array_multisort


1
Здравейте,
опитвам се да сортирам 2 свързани масива, като използвам
 
array_multisort($ar1,SORT_ASC,$ar2);
 
когато използвам като тестов пример
$ar1=Array
(
    [0] => ябълка
    [1] => круша
    [2] => кайсия
    [3] => слива
)
-----------------------
-----------------------
$ar2=Array
(
    [0] => иван
    [1] => петър
    [2] => стоян
    [3] => иван
)
всичко е наред и резултатът е
$ar1=Array
(
    [0] => кайсия
    [1] => круша
    [2] => слива
    [3] => ябълка
)
-----------------------
-----------------------
$ar2=Array
(
    [0] => стоян
    [1] => петър
    [2] => иван
    [3] => иван
)
Когато обаче използвам реални данни (от MySql таблица):
$ar1=Array
(
    [0] => Аида
    [1] => Симфоничен концерт
    [2] => Ноктюрно
    [3] => Пролетно тайнство
    [4] => La Traviata
    [5] => Цвета
)
-----------------------
-----------------------
$ar2=Array
(
    [0] => Верди, Джузепе
    [1] => Бетовен, Лудвиг ван
    [2] => Лист, Ференц
    [3] => Стравински Игор
    [4] => Verdi, Giuseppe
    [5] => Атанасов, Маестро Георги
)
 
След подреждането:
 
$ar1=Array
(
    [0] => Аида
    [1] => Симфоничен концерт
    [2] => Ноктюрно
    [3] => Пролетно тайнство
    [4] => La Traviata
    [5] => Цвета
)
-----------------------
-----------------------
$ar2=Array
(
    [0] => Верди, Джузепе
    [1] => Бетовен, Лудвиг ван
    [2] => Лист, Ференц
    [3] => Стравински, Игор
    [4] => Verdi, Giuseppe
    [5] => Атанасов, Маестро Георги
)
-----------------------
т. е. няма коректно подреждане.
Използването на 
setlocale(LC_ALL,'bg_BG.UTF-8'); и опциите
SORT_LOCALE_STRING или SORT_STRING не променя резултата.
Таблицата ми е с колация utf8_general_ci.
Къде греша?



Отговори



0
Здравей, в случая с MySql таблица не е направено никакво преподреждане, дали изобщо достъпва таблицата?

от ellapt (6303 точки)


0
Да, данните са от таблицата (това са всичките данни от нея). Ако дам сортиране по низходящ ред: Array ( [0] => Цвета [1] => La Traviata [2] => Пролетно тайнство [3] => Ноктюрно [4] => Симфоничен концерт [5] => Аида ) т. е. обръща се реда, но взаимното положение на елементите се запазва. Това се получава при реалните данни от базата, a когато въведа ръчно същите данни в масивите всичко е ОК: ----------------------- Array ( [0] => Аида [1] => Ноктюрно [2] => Пролетно тайнство [3] => Симфоничен концерт [4] => Цвета [5] => La Traviata ) ----------------------- ----------------------- Array ( [0] => Верди, Джузепе [1] => Лист, Ференц [2] => Стравински, Игор [3] => Бетовен, Лудвиг ван [4] => Атанасов, Маестро Георги [5] => Verdi, Giuseppe ) ----------------------- Затова предполагам, че е нещо свързано с колацията. Но какво?

от angie_bg (214 точки)

0
Опитай с колация utf8_unicode_ci Записите съдържат текст както на латиница, така и на кирилица, така че може да е по-подходящо да се използва unicode.

от ellapt (6303 точки)