@lunsy
СНГшный "программист"

Как заполнить массив текстовыми значениями: 0001, 0002, ..., 9999?

Как заполнить массив текстовыми значениями от 0001 до 9999? Т.е., массив обязательно должен иметь 9999 индексов с соответствующими значениями. С числами проще конечно, но мне нужны нули спереди в обязательно порядке.
  • Вопрос задан
  • 266 просмотров
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
Функция str_pad дополняет входную строку до нужной длины любым символом, слева и/или справа.

Этого достаточно для решения поставленной задачи.

$resultArray = [];

for ($i = 1; $i <= 9999; $i++) {
  $resultArray[] = str_pad($i, 4, '0', STR_PAD_LEFT);
}

var_dump($resultArray);


пояснение функции
str_pad(
  $i,           // текущее число (оно будет приведено к строке автоматически)
  4,            // дополнить до 4-х символов
  '0',          // нулями
  STR_PAD_LEFT  // слева
)


С циклом, надеюсь, знакомы.
Ответ написан
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Напишу свой вариант

$result = array_map(
    function($value) {
        return sprintf("%'.04d", $value);
    }, range(1, 9999)
);

echo '<pre>' . print_r($result, true) . '</pre>';
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@bkosun
Используйте функцию range, чтобы создать массив содержащий диапазон элементов, функцию array_map, чтобы применить callback для всех елементов массива и при помощи функции str_pad привести числа в нужный формат.

$values = array_map(function($v){
			return str_pad($v, 4, '0', STR_PAD_LEFT);
		}, range(1, 9999));


https://www.php.net/manual/ru/function.range.php
https://www.php.net/manual/ru/function.array-map.php
https://www.php.net/manual/ru/function.str-pad.php
Ответ написан
@oxidmod
$ints = range(1, 9999);
$values = array_map(
    'str_pad',
    $ints,
    array_fill(0, count($ints), 4),
    array_fill(0, count($ints), '0'),
    array_fill(0, count($ints), STR_PAD_LEFT)
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы