PHP创建数组,其中键和值相同

时间:2011-03-19 05:19:28

标签: php arrays range

我正在使用range()函数创建一个数组。但是,我希望keysvalue相同。当我从range(0, 10)开始索引0时,这是可以的,但是如果我range(1, 11),则索引仍将从0开始,因此它最终会0=>1 1}}当我希望它为1=>1

如何使用range()创建一个keyvalue相同的数组?

6 个答案:

答案 0 :(得分:127)

array_combine怎么样?

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

答案 1 :(得分:6)

或者你是这样做的:

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

在此处查找输出:http://codepad.org/gx9QH7ES

答案 2 :(得分:0)

没有开箱即用的解决方案。您必须自己创建阵列,如下所示:

$temp = array();
foreach(range(1, 11) as $n) {
   $temp[$n] = $n;
}

但是,更重要的是,为什么你需要这个吗?你可以只使用这个值吗?

答案 3 :(得分:0)

<?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

答案 4 :(得分:0)

<?php

$array = array();
foreach (range(1,11) as $r)
  $array[$r] = $r;

print_r($array);

?>

答案 5 :(得分:0)

创建一个函数来实现:

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&gt;中,您可以使用Generator来实现:

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

        yield $i => $i;
    }
}