Неправильный вывод с использованием array_diff(), когда целочисленные значения дополняются нулями.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Неправильный вывод с использованием array_diff(), когда целочисленные значения дополняются нулями.

Сообщение Anonymous »

Следующий код отлично работает с предоставленным массивом.

Код: Выделить всё

$arr1 = array(1,2,4,6,7,9,13,15);

$arr2 = range(1,max($arr1));

$missing = array_diff($arr2,$arr1);

foreach ($missing as $key => $val) {
echo $val;
echo ",";
}
Но если я изменю $arr1, чтобы он содержал 001,002,004,006,007,009,013,015, он выдаст следующий результат: 003,005,008,009,010,012,

Я форматирую выведите это, поместив это в цикл foreach:

Код: Выделить всё

$val = str_pad($val, 3, "0", STR_PAD_LEFT);
Я не могу понять, почему он объявляет 009 отсутствующим; почему он не объявляет 011 и 014 отсутствующими; и почему оно заканчивается запятой.

Есть ли способ переписать код, чтобы он правильно обрабатывал массив?

Подробнее здесь: https://stackoverflow.com/questions/400 ... d-with-zer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»