PHP 创建键和值相同的数组

问题描述 投票:0回答:6

我正在使用

range()
函数来创建一个数组。但是,我希望
keys
value
相同。当我做
range(0, 10)
时这是可以的,因为索引从
0
开始,但是如果我做
range(1, 11)
,索引仍然会从
0
开始,所以当我想要它是
 时它最终是 
0=>1
 1=>1

如何使用

range()
创建一个数组,其中
key
value
相同?

php arrays range
6个回答
144
投票

array_combine怎么样?

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

或者(按照评论中的建议):

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

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.