PHP code example of jrdev / drange

1. Go to this page and download the library: Download jrdev/drange library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jrdev / drange example snippets


use jrdev\DRange;
use jrdev\DRange\SubRange; // only needed if you use SubRange directly

$drange = new DRange(1, 5);   // [ 1-5 ]
$drange->add(8);               // [ 1-5, 8 ]   gap at 6-7
$drange->add(6, 7);            // [ 1-8 ]       auto-merged
$drange->subtract(1, 3);       // [ 4-8 ]

echo $drange;           // "[ 4-8 ]"
echo count($drange);    // 5

$drange = new DRange(1, 10)
    ->subtract(5)
    ->subtract(7);
// [ 1-4, 6, 8-10 ]

$allowed = new DRange(1, 1023);

$blocked = new DRange(22);
$blocked->add(23)->add(3306)->add(5432);

$available = clone $allowed;
$available->subtract($blocked);
// [ 1-21, 24-3305, 3307-5431, 5433-1023 ]

$drange = new DRange(0, 9);   // 10 elements: 0–9
$drange->add(20, 29);          // 10 more:      20–29
$drange->add(40, 49);          // 10 more:      40–49

$drange->index(0);   // 0   (1st element)
$drange->index(15);  // 25  (16th element, 6th in second sub-range)
$drange->index(25);  // 45  (26th element, 6th in third sub-range)
$drange->index(55);  // null (out of bounds)

$drange = new DRange(1, 5);   // 5 elements
$drange->add(10, 15);          // 6 more

count($drange); // 11

$available = new DRange(1, 10);
$available->add(20, 30);
// [ 1-10, 20-30 ]

$requested = new DRange(5, 25);

$overlap = $available->intersect($requested);
// [ 5-10, 20-25 ]

count($overlap); // 12

use jrdev\DRange\SubRange;

$drange = new DRange(1, 10);
$drange->subtract(new SubRange(4, 6));
// [ 1-3, 7-10 ]