clouding/range

用于范围对象的简单库。

v1.1.1 2019-01-11 07:55 UTC

This package is auto-updated.

Last update: 2024-09-11 20:42:14 UTC


README

PHPStan

用于 范围 对象的简单库。

目录

  1. 安装
  2. 使用

安装

composer require clouding/range

使用

创建

创建新实例

use Clouding\Range\Range;

$range = new Range(1, 10);

从字符串创建实例

$range = Range::parse('1..10');

获取器

获取起始或结束值

echo $range->start; // 1

echo $range->end;   // 10

比较

确定是否包含整数

$range = new Range(1, 10);

var_dump($range->contains(5)); // bool(true)

确定两个范围实例是否相等

$range = new Range(1, 10);
$rangeFoo = new Range(1, 10);

var_dump($range->equals($rangeFoo)); // bool(true)

确定两个范围实例是否相交

$range = new Range(1, 10);
$rangeBar = new Range(5, 10);

var_dump($range->intersect($rangeBar)); // bool(true)

转换

获取实例作为字符串

$range = Range::parse('-5..5');

echo $range;            // -5..5
echo $range->toString() // -5..5

获取实例作为数组

$range = new Range(1, 5);

var_dump($range->toArray());  // [1, 2, 3, 4, 5]

// with gap 2
var_dump($range->toArray(2)); // [1, 3, 5]

格式化字符串

echo $range->format(':start ~ :end');       // 1 ~ 10

echo $range->format('From :start to :end'); // From 1 to 10

函数

对范围中的每个整数执行回调

$range = new Range(1, 5);

$range->each(function ($int) {
    echo $int, ', ';
});
// 1, 2, 3, 4, 5, 

$range->each(function ($int) {
    if ($int >= 3) {
        return false;
    }
    echo $int . ', ';
});
// 1, 2, 

// with gap 2
$range->each(function($int) {
    echo $int . ', ';
}, 2);
// 1, 3, 5,

获取范围内的随机整数

$range = new Range(1, 10);

echo $range->random();       // 3 

var_dump($range->random(3)); // [3, 2, 9]