我正在使用range()
函数创建一个数组。但是,我希望keys
和value
相同。当我使用range(0, 10)
时,由于索引从0
开始,这没问题,但如果我使用range(1, 11)
,索引仍将从0
开始,因此最终结果是0=>1
,而我希望它是1=>1
。
如何使用range()
创建一个数组,其中key
与value
相同?
我正在使用range()
函数创建一个数组。但是,我希望keys
和value
相同。当我使用range(0, 10)
时,由于索引从0
开始,这没问题,但如果我使用range(1, 11)
,索引仍将从0
开始,因此最终结果是0=>1
,而我希望它是1=>1
。
如何使用range()
创建一个数组,其中key
与value
相同?
那 array_combine 呢?
$b = array_combine(range(1,10), range(1,10));
array_combine($r = range(1, 10), $r)
可以避免在两次调用中重复使用range
。该函数将创建一个键为1到10,值为1到10的关联数组。 - Wallace Vizerra$b = array_slice(range(0,10), 1, NULL, TRUE);
这个问题没有现成的解决方案。你需要自己创建数组,像这样:
$temp = array();
foreach(range(1, 11) as $n) {
$temp[$n] = $n;
}
但是,更重要的是,为什么你需要这个?你不可以直接使用这个值吗?
<?php
function createArray($start, $end){
$arr = array();
foreach(range($start, $end) as $number){
$arr[$number] = $number;
}
return $arr;
}
print_r(createArray(1, 10));
?>
在这里查看输出结果:http://codepad.org/Z4lFSyMy
<?php
$array = array();
foreach (range(1,11) as $r)
$array[$r] = $r;
print_r($array);
?>
if (! function_exists('sequence_equal'))
{
function sequence_equal($low, $hight, $step = 1)
{
return array_combine($range = range($low, $hight, $step), $range);
}
}
使用:
print_r(sequence_equal(1, 10, 2));
输出:
array (
1 => 1,
3 => 3,
5 => 5,
7 => 7,
9 => 9,
)
function sequence_equal($low, $hight, $step = 1)
{
for ($i = $low; $i < $hight; $i += $step) {
yield $i => $i;
}
}