范围内的$ step的负值(),PHP

时间:2017-08-04 06:58:35

标签: php

这取自php.net手册中的json_decode(),例4,从底部的第5行:

foreach (range(4, 3, -1) as $depth)

我不确定那里-1的目的是什么。我尝试了范围(4,3,1)和范围(4,3,-1),它给出了相同的结果。第一个示例中的1是默认值,因此它可以是范围(4,3)。我只是尝试使用print_r(range(4,3,-1);因此php.net上的示例可能是另一回事。我在网上看,没有关于它的信息,或者没有马上。

2 个答案:

答案 0 :(得分:2)

它实际上会忽略$step参数的符号,并根据$start > $end还是$end > $start确定是否增加或减少。例如:

<?php print_r( range( 20, 11, 3 ) ); ?>
Array
(
    [0] => 20
    [1] => 17
    [2] => 14
    [3] => 11
)

<?php print_r( range( 11, 20, -3 ) ); ?>
Array
(
    [0] => 11
    [1] => 14
    [2] => 17
    [3] => 20
)

答案 1 :(得分:0)

步骤自动转换为正数(是的,这里的手册不正确)

所以这些都可行:

var_dump(
    range(1, 5, 1), // positive integer
    range(1, 5, -1), // negative integer
    range(1, 5, 2), 
    range(1, 5, .5), // positive fractional number
    range(1, 5, "-0.1") // negative fractional number passed as string
);

另外,如果你使用浮动值作为$ step,所有值也将浮动,即使它们是整数。