array_multisort Преобразует строковый индекс в целочисленный индекс

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

 $info = array();
$submitted = array();

Я объявил задание ниже:

 $info['idnumber'] = 10066;
$submitted[$info['idnumber']] = 'Wow';

array_multisort($submitted);

После этого отображается $submitted массив.

 foreach($submitted as $key => $row){
echo $key;
}

Почему это отображает 0 вместо 10066? Я попытался настроить свой код для:

$info['idnumber'] = 10066;
$submitted[(string)$info['idnumber']] = 'Wow';

или же

$info['idnumber'] = 10066;
$submitted[strval($info['idnumber'])] = 'Wow';

Тем не менее это отображает 0, Что я должен сделать, чтобы отобразить 10066 в качестве индекса $submitted массив?

Обновить:

Я узнал, что это известная ошибка array_multisort, но все же у него нет решений. Есть идеи, как это исправить?

0

Решение

Как вы указали, это известное поведение.

Решение было предложено в обсуждении

На данный момент я собираюсь сказать префикс всех ваших ключей массива с дополнительным 0 (или любой не числовой), чтобы заставить их приводить в виде строк.

Когда вы пытаетесь привести целое число в строку следующим образом:

(string)$info['idnumber']

вы по-прежнему получаете целое число, потому что у вас есть действительное число в виде строки.

Таким образом, вам нужно иметь строку, как с некоторым префиксом. Префикс может быть 0 или любым другим нечисловым символом. как я

$info['idnumber'] = '010066';

Или же

$info['idnumber'] = 'i00066';

Это вернет точный индекс.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]