czeski
czeski

Reputation: 228

How to generate an array of strings numbers with a specific range

I want to generate an array of strings with a specific range. From 0000000000 to 9999999999.

What have I done is:

$range = range('0000000000', '9999999999', '1111111111');

Above code returns an array of ints:

array(10) {
  [0]=>
  int(0)
  [1]=>
  int(1111111111)
  [2]=>
  int(2222222222)
  [3]=>
  int(3333333333)
  [4]=>
  int(4444444444)
  [5]=>
  int(5555555555)
  [6]=>
  int(6666666666)
  [7]=>
  int(7777777777)
  [8]=>
  int(8888888888)
  [9]=>
  int(9999999999)
}

Is it possible to get from the range function an array of strings numbers or do it differently in a nice way (without loop)?

Upvotes: 0

Views: 1585

Answers (1)

Thamilhan
Thamilhan

Reputation: 13303

Use array_map

<?php
$range = range('0000000000', '9999999999', '1111111111');
var_dump(array_map('strval',$range));

This will return:

array(10) {
  [0]=>
  string(1) "0"
  [1]=>
  string(10) "1111111111"
  [2]=>
  string(10) "2222222222"
  [3]=>
  string(10) "3333333333"
  [4]=>
  string(10) "4444444444"
  [5]=>
  string(10) "5555555555"
  [6]=>
  string(10) "6666666666"
  [7]=>
  string(10) "7777777777"
  [8]=>
  string(10) "8888888888"
  [9]=>
  string(10) "9999999999"
}

Alternatively, for 0 to be returned as 0000000000, (as per @Franz Gleichmann comments)

<?php
$range = range('0000000000', '9999999999', '1111111111');
$rangeElements = array_map(function($range) {
    return str_pad($range, 10, '0', STR_PAD_LEFT); 
}, $range);
var_dump($rangeElements);

or

<?php
$range = range('0000000000', '9999999999', '1111111111');
$rangeElements = array_map(function($range) {
    return sprintf('%010d', $range); 
}, $range);
var_dump($rangeElements);

so output:

array(10) {
  [0]=>
  string(10) "0000000000"
  [1]=>
  string(10) "1111111111"
  [2]=>
  string(10) "2222222222"
  [3]=>
  string(10) "3333333333"
  [4]=>
  string(10) "4444444444"
  [5]=>
  string(10) "5555555555"
  [6]=>
  string(10) "6666666666"
  [7]=>
  string(10) "7777777777"
  [8]=>
  string(10) "8888888888"
  [9]=>
  string(10) "9999999999"
}

Upvotes: 2

Related Questions