如何生成具有特定范围的字符串数字数组


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

我想生成一个具有特定范围的字符串数组。从0000000000到9999999999。

我所做的是:

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

以上代码返回一个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)
}

是否可以从range函数中获得一个字符串数字数组,或者以一种很好的方式(无循环)进行不同的处理?

使用array_map

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

这将返回:

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"
}

或者,将0作为0000000000返回(根据@Franz Gleichmann的评论)

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

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

所以输出:

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"
}