|
|
|
| Здравствуйте.
При обработке числового (все элементы int) массива обнаружил некоторую неточность - теряются значения 08 и 09 (все элементы массива двузначные, числа первого десятка записываются с первым нолем), хотя при значении элемента 01...07 все отрабатывает нормально.
для примера вывел массив
$q = array(01,02,03,04,05,06,07,08,09,010);
echo "<pre>";
print_r($q);
echo "</pre>";
|
и вот что получается
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 0
[8] => 0
[9] => 8
)
|
Подозреваю, что срабатывает переключение типа исчисления. Или что то другое? Как с ним бороться? | |
|
|
|
|
|
|
|
для: Jackson
(28.05.2012 в 17:53)
| | Просто незначащий слева ноль отбрасывается. Работайте со строками. | |
|
|
|
|
|
|
|
для: confirm
(28.05.2012 в 17:58)
| | со строками тоже как то не сразу получилось - в массив то попало уже значение целочисленное и при операции обработки не получится явно преобразовать элемент в строку (ну собственно строка страла "0", что тоже не годиться). Пришлось массив шерстить и все 08, 09 менять на 8, 9...
но тут уже интересно - что за поведение? | |
|
|
|
|
|
|
|
для: Jackson
(28.05.2012 в 18:07)
| | С 0 начинаются восьмеричные числа, т.е. 08 и 09 не существуют как числа, поэтому они приводятся к 0, а 010 - это в десятеричной системе не фига не 10, а 8. | |
|
|
|
|
|
|
|
для: Jackson
(28.05.2012 в 18:07)
| | Извиняюсь, а я до конца (вернее невнимательно) не просмотрел вывод )
Но вам уже ответили о причине. | |
|
|
|