【问题标题】:Generate equal set of number minus to plus with PHP使用 PHP 生成相等的数字减号到加号
【发布时间】:2019-11-26 00:19:07
【问题描述】:

我需要帮助来使用 PHP 创建下面的一组数字。

示例:

$i = 7 

结果:

-3,-2,-1,0,1,2,3

另一个例子:

$i = 3

结果:

-1,0,1

谢谢

【问题讨论】:

  • 另一个想法——如果你创建这个集合只是为了迭代它,你并不真的需要它。你只需要起点和大小。所以你可以这样做:
  • for ($x = -floor($i / 2), $end = $x + $i; $x < $end; $x++) { ...

标签: php numbers days


【解决方案1】:

您可以使用range,最小/最大值为+/-floor($i/2),例如

$i = 7;
print_r(range(-floor($i / 2), floor($i / 2)));

输出:

Array
(
    [0] => -3
    [1] => -2
    [2] => -1
    [3] => 0
    [4] => 1
    [5] => 2
    [6] => 3
)

如果您希望它使用偶数,您必须决定是否希望该范围具有更多的负值或正值,并相应地调整最小值/最大值:

$i = 4;
print_r(range(-floor($i / 2), floor($i / 2) - 1));
$i = 4;
print_r(range(1 - floor($i / 2), floor($i / 2)));

输出:

Array
(
    [0] => -2
    [1] => -1
    [2] => 0
    [3] => 1
)
Array
(
    [0] => -1
    [1] => 0
    [2] => 1
    [3] => 2
)

Demo on 3v4l.org

一旦您决定在输入为偶数时更喜欢哪个方向,您可以使用% 确定输入是奇数还是偶数,从而使代码适用于偶数和奇数值。更多负值:

print_r(range(-floor($i / 2), floor($i / 2) - ($i + 1) % 2));

更多正值:

print_r(range(($i + 1) % 2 - floor($i / 2), floor($i / 2)));

Demo on 3v4l.org

【讨论】:

  • 对于偶数来说,范围 1 太大了,对吧?也许只需将$i 添加到最小值?
  • 哦等等,那是一样的。我猜应该是 min + $i - 1
  • @Don'tPanic 你说得对。我为偶数提供了几个选项。
猜你喜欢
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多