php数组创建错误的测试数据

时间:2017-08-03 08:12:19

标签: php arrays

我有一个问题:

 /**
 * 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] [&#39; min&#39;] === 96)在第50行的C:\ xampp \ htdocs \ InSite \ php_exercise.php中失败

警告:断言():断言($ priceRangeCollection2 [32] [&#39; max&#39;] === 99)在第51行的C:\ xampp \ htdocs \ InSite \ php_exercise.php中失败

1 个答案:

答案 0 :(得分:0)

如果更改测试数据,您的代码将完美运行,如下所示:

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