PHP创建一个键和值相同的数组

46

我正在使用range()函数创建一个数组。但是,我希望keysvalue相同。当我使用range(0, 10)时,由于索引从0开始,这没问题,但如果我使用range(1, 11),索引仍将从0开始,因此最终结果是0=>1,而我希望它是1=>1

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


1
为什么不干脆不使用密钥呢? - Ignacio Vazquez-Abrams
我正在使用一个无法修改的库,它需要这个 >.< - Ozzy
可能是重复的问题,参考如何使用PHP创建具有键的值范围数组? - Wallace Vizerra
6个回答

144

array_combine 呢?

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

range函数如何返回数组值?当我们使用echo range(1,10)时,它会显示完整内容吗?有点困惑吧? - Nandakumar
34
使用array_combine($r = range(1, 10), $r)可以避免在两次调用中重复使用range。该函数将创建一个键为1到10,值为1到10的关联数组。 - Wallace Vizerra

7
或者你可以这样做:
$b = array_slice(range(0,10), 1, NULL, TRUE);

在这里找到输出结果:http://codepad.org/gx9QH7ES。该链接是一个网页,其中包含代码的输出结果。

0

这个问题没有现成的解决方案。你需要自己创建数组,像这样:

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

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


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


0
<?php

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

print_r($array);

?>

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 及以上版本中,您可以使用生成器(Generator)来实现此功能:
function sequence_equal($low, $hight, $step = 1)
{
    for ($i = $low; $i < $hight; $i += $step) {

        yield $i => $i;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接