2017-08-03 129 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