2011-03-19 58 views
38

我正在使用range()函數來創建數組。不過,我希望keysvalue相同。這是確定當我這樣做range(0, 10)作爲指數從0開始,但是如果我做range(1, 11),指數仍將從0開始,所以它最終0=>1時,我想這是1=>1PHP創建數組,其中鍵和值相同

如何使用range()來創建一個數組,其中keyvalue相同?

+0

爲什麼不乾脆不使用鑰匙呢? – 2011-03-19 05:22:56

+0

即時通訊使用庫我無法修改,需要此>。< – Ozzy 2011-03-19 06:07:01

+0

可能的重複[如何創建一個數組範圍與鍵使用PHP?](http://stackoverflow.com/questions/8227875/how -do-i-create-an-array-for-a-range-of-values -with-keys-using-php) – 2016-01-13 11:24:53

回答

120

如何array_combine?

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

range如何返回數組值?當我們回顯範圍(1,10)時,它會顯示完整內容?混淆的傢伙? – Nandakumar 2013-11-18 06:24:37

+0

輝煌答案 – 2014-01-13 23:50:23

+0

簡單,清晰,完美! – 2014-08-20 06:29:48

1

沒有開箱即用的解決方案。你將不得不自己創建數組,像這樣:

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

?> 
5

或者是你是這樣說的:

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

在這裏找到輸出:http://codepad.org/gx9QH7ES

+0

她的代碼很聰明 – 2016-01-13 10:46:33

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> =你可以使用發電機,使這個:

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

     yield $i => $i; 
    } 
} 
相關問題