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