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

时间:2015-11-20 09:43:57

标签: php arrays

我想生成一个具有特定范围的字符串数组。从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函数获取一个字符串数组数组,或者以一种很好的方式(没有循环)以不同的方式执行它?

1 个答案:

答案 0 :(得分:2)

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