2011-11-01 43 views
0

我怎麼會做這樣的事情使用範圍陣列

$ranges = array(
    range(34, 37) => 'Group A', 
    range(38, 39) => 'Group B', 
    range(40, 41) => 'Group C', 
); 

foreach($ranges as $range_key => $range_value) { 
    echo "K: ".$range_key." V: ".$range_value."\n"; 
} 

我得到

警告:非法偏移類型

+0

是否有原因,你不'陣列('組A'=>範圍(34,37))'等? –

+0

是的,這給了我一個多維數組,我正在尋找只填充一個數組 –

回答

4

range()返回不能用作數組數組鍵。您將需要返回數組中使用的每個值作爲密鑰,就像這樣:

foreach (range(34, 37) as $value) { 
    $ranges[$value] = 'Group A'; 
} 
foreach (range(38, 39) as $value) { 
    $ranges[$value] = 'Group B'; 
} 
foreach (range(40, 41) as $value) { 
    $ranges[$value] = 'Group C'; 
} 
+0

只是做了這個自己+1 –

0

我覺得你有你的關鍵字和值向後

$ranges = array(
    'Group A' => range(34, 37), 
    'Group B' => range(38, 39), 
    'Group C' => range(40, 41), 
); 

foreach($ranges as $range_key => $range_value) { 
    echo "K: ".$range_key." V: "; 
    print_r($range_value) 
    echo "\n"; 
} 
1
function make_range($first, $last, $value, &$data_array) 
{ 
    if ($last < $first) return; 

    for($index = $last; $index >= $first; --$index) 
    $data_array[ $index ] = $value; 

    ksort($data_array, SORT_NUMERIC); 
} 
1

也許這將有助於

$ranges = array_fill(34, 37, 'Group A'); 
print_r($ranges);