У меня есть два массива:
$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 (или любой не числовой), чтобы заставить их приводить в виде строк.
Когда вы пытаетесь привести целое число в строку следующим образом:
(string)$info['idnumber']
вы по-прежнему получаете целое число, потому что у вас есть действительное число в виде строки.
Таким образом, вам нужно иметь строку, как с некоторым префиксом. Префикс может быть 0 или любым другим нечисловым символом. как я
$info['idnumber'] = '010066';
Или же
$info['idnumber'] = 'i00066';
Это вернет точный индекс.
Других решений пока нет …