функция array_multisort в php меняет ключ моего массива

У меня есть этот массив:

$array["4E-952778"][0]['fileName'] = "File 1";
$array["4E-952778"][0]['product'] = "Muse On Demand";
$array["4E-952778"][1]['fileName'] = "File 2";
$array["4E-952778"][1]['product'] = "Muse On Demand";

$array["15210"][0]['fileName'] = "File 3";
$array["15210"][0]['product'] = "4Manager";
$array["15210"][1]['fileName'] = "File 4";
$array["15210"][1]['product'] = "4Manager";

$products = array();
foreach ($array as $key => $row) {
$products[$key] = $row[0]['product'];
}
array_multisort($products, SORT_ASC, $array);

print_r($array);

и результат таков:

Array
(
[0] => Array
(
[0] => Array
(
[fileName] => File 3
[product] => 4Manager
)

[1] => Array
(
[fileName] => File 4
[product] => 4Manager
)

)
[4E-952778] => Array
(
[0] => Array
(
[fileName] => File 1
[product] => Muse On Demand
)
[1] => Array
(
[fileName] => File 2
[product] => Muse On Demand
)
)
)

Как вы можете наблюдать за функцией array_multisort() изменить ключ: 15210 в 0 почему это изменение?

2

Решение

Цитата из руководство:

Ассоциативные (строковые) ключи будут сохранены, но числовые ключи будут переиндексированы.

И PHP автоматически переводит вашу строку «15210» в целое число.

Хитрость для этого состоит в том, чтобы добавить «0» к ключу («015210»), это приведет к приведению типа к (string).

Если хотите узнать больше об этом, смотрите: Ошибка # 21788 array_multisort () изменяет ключи массива неожиданно, учитывая числовые строки в качестве ключей

4

Другие решения

я нашел решение этой проблемы

uasort($array, function ($a, $b) {
$i=0;
return strcmp($a[$i]['product'], $b[$i]['product']);

});

0