PHP创build数组,其中键和值是相同的

我正在使用range()函数来创build一个数组。 但是,我想要的keys是相同的value 。 这是好的,当我做range(0, 10)作为索引从0开始,但是,如果我做range(1, 11) ,索引将仍然从0开始,所以它结束了0=>1当我想要它为1=>1

我怎样才能使用range()来创build一个数组,其中的key是相同的value

怎么样array_combine?

 $b = array_combine(range(1,10), range(1,10)); 

或者你这样做了:

 $b = array_slice(range(0,10), 1, NULL, TRUE); 

在这里find输出: http : //codepad.org/gx9QH7ES

没有开箱即用的解决scheme。 你将不得不自己创build数组,像这样:

 $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); ?> 

创build一个函数来做到这一点:

 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, ) 

在PHP 5.5> =你可以使用发生器来做到这一点:

 function sequence_equal($low, $hight, $step = 1) { for ($i = $low; $i < $hight; $i += $step) { yield $i => $i; } }