2017-08-03 123 views
-2

我已經給出了一個問題:PHP數組創建

/** 
* return structure should be an array of hashmaps which looks something like 
* 
* array(3) { 
* [0] => 
* array(2) { 
* 'min' => int(500) 
* 'max' => int(750) 
* } 
* [1] => 
* array(2) { 
* 'min' => int(750) 
* 'max' => int(1000) 
* } 
* [2] => 
* array(2) { 
* 'min' => int(1000) 
* 'max' => int(1250) 
* } 
* } 
* 
* @param int $min 
* @param int $max 
* @param int $incrementStep 
* @return array 
*/ 

function getPriceRangeCollection($min, $max, $incrementStep) { 
//code goes here 
} 

//test code - DO NOT REMOVE 
$priceRangeCollection = getPriceRangeCollection(500, 5000, 250); 
assert($priceRangeCollection[17]['min'] === 4750 && $priceRangeCollection[17]['max'] === 5000); 
assert($priceRangeCollection[9]['min'] === 2750 && 
$priceRangeCollection[9]['max'] === 3000); 

$priceRangeCollection2 = getPriceRangeCollection(1, 100, 3); 
assert(count($priceRangeCollection2) === 33); 
assert($priceRangeCollection2[32]['min'] === 96); 
assert($priceRangeCollection2[32]['max'] === 99); 

對於該練習中,將需要創建函數getPriceRangeCollection這是創建值對的數組(按照上面的例子)由增量值從最小範圍開始到最大範圍。

到目前爲止,我對第一組測試數據有效,但第二組失敗。用assert($ priceRangeCollection2 [32] ['min'] === 96);爲1低於我的代碼生成,這是97

function getPriceRangeCollection($min, $max, $incrementStep) { 
    //code goes here 
    $myArray = array(); 
    $index = 0; 

    for($i = $min; $i < $max; $i = $i + $incrementStep){ 
     $myArray[ $index ] = array('min' => $i, 'max' => $i + $incrementStep); 
     $index ++; 
    } 

    return $myArray; 
} 

我錯過了一些東西,或者是所提供的測試數據錯了嗎? priceRangeCollection2的

的var_dump:

array(33) { [0]=> array(2) { ["min"]=> int(1) ["max"]=> int(4) } [1]=> array(2) { ["min"]=> int(4) ["max"]=> int(7) } [2]=> array(2) { ["min"]=> int(7) ["max"]=> int(10) } [3]=> array(2) { ["min"]=> int(10) ["max"]=> int(13) } [4]=> array(2) { ["min"]=> int(13) ["max"]=> int(16) } [5]=> array(2) { ["min"]=> int(16) ["max"]=> int(19) } [6]=> array(2) { ["min"]=> int(19) ["max"]=> int(22) } [7]=> array(2) { ["min"]=> int(22) ["max"]=> int(25) } [8]=> array(2) { ["min"]=> int(25) ["max"]=> int(28) } [9]=> array(2) { ["min"]=> int(28) ["max"]=> int(31) } [10]=> array(2) { ["min"]=> int(31) ["max"]=> int(34) } [11]=> array(2) { ["min"]=> int(34) ["max"]=> int(37) } [12]=> array(2) { ["min"]=> int(37) ["max"]=> int(40) } [13]=> array(2) { ["min"]=> int(40) ["max"]=> int(43) } [14]=> array(2) { ["min"]=> int(43) ["max"]=> int(46) } [15]=> array(2) { ["min"]=> int(46) ["max"]=> int(49) } [16]=> array(2) { ["min"]=> int(49) ["max"]=> int(52) } [17]=> array(2) { ["min"]=> int(52) ["max"]=> int(55) } [18]=> array(2) { ["min"]=> int(55) ["max"]=> int(58) } [19]=> array(2) { ["min"]=> int(58) ["max"]=> int(61) } [20]=> array(2) { ["min"]=> int(61) ["max"]=> int(64) } [21]=> array(2) { ["min"]=> int(64) ["max"]=> int(67) } [22]=> array(2) { ["min"]=> int(67) ["max"]=> int(70) } [23]=> array(2) { ["min"]=> int(70) ["max"]=> int(73) } [24]=> array(2) { ["min"]=> int(73) ["max"]=> int(76) } [25]=> array(2) { ["min"]=> int(76) ["max"]=> int(79) } [26]=> array(2) { ["min"]=> int(79) ["max"]=> int(82) } [27]=> array(2) { ["min"]=> int(82) ["max"]=> int(85) } [28]=> array(2) { ["min"]=> int(85) ["max"]=> int(88) } [29]=> array(2) { ["min"]=> int(88) ["max"]=> int(91) } [30]=> array(2) { ["min"]=> int(91) ["max"]=> int(94) } [31]=> array(2) { ["min"]=> int(94) ["max"]=> int(97) } [32]=> array(2) { ["min"]=> int(97) ["max"]=> int(100) } } 

警告:斷言():斷言($ priceRangeCollection2 [32] [ '分鐘'] === 96)未能在C:\ XAMPP \ htdocs中\ InSite的\ php_exercise .php on line 50

Warning:assert():assert($ priceRangeCollection2 [32] ['max'] === 99)在第51行C:\ xampp \ htdocs \ InSite \ php_exercise.php中失敗

+0

_「這是創建一個數組值對(如上面的例子)」_ - 上面的例子? – CBroe

+0

已編輯的問題爲您提供這個! – user3633383

+0

請提供'priceRangeCollection2'的轉儲。測試數據沒有錯。 – msfoster

回答

0

如果您更改測試數據,您的代碼可以很好地工作,如下所示:

$priceRangeCollection2 = getPriceRangeCollection(0, 98, 3); 
assert($priceRangeCollection2[32]['min'] === 96); 
assert($priceRangeCollection2[32]['max'] === 99); 
assert(count($priceRangeCollection2) === 33); 
+0

我不認爲他們會讓我更改測試數據,使其工作 – user3633383

+0

如果我將其更改爲您的建議,那麼我的原始代碼也適用。所以,我認爲,測試數據是不正確的! – user3633383

+0

是的,這也是我的想法 – yoeunes