MBrendecke icon

Lambda

MBrendecke | PRO | 03/29/18 01:11:45 PM UTC | 0 ⭐ | 477 👁️ | Never ⏰ | []
PHP |

1.47 KB

|

None

|

0 👍

/

0 👎

<?php
 
class Container {
 
    protected $values;
 
    public function __construct() {
        $this->values = array();
    }
 
    public function __get($key) {
        return $this->values[$key] ?? NULL;
    }
 
    public function __set($key, $value) {
        $this->values[$key] = $value;
    }
 
    public function find(\Closure $match) {
        foreach ($this->values as $value) {
            if ($match($value)) {
                return $match;
            }
        }
    }
 
    public function findAll(\Closure $match) {
        foreach ($this->values as $value) {
            if ($match($value)) {
                yield $value;
            }
        }
    }
 
}
 
$container = new Container();
 
foreach (range(0, 101) as $value) {
    $container->$value = $value;
}
 
printValues($container->findAll(function ($num) { return $num % 2 == 0; }));
 
echo '<br />';
 
printValues($container->findAll(function ($num) { return $num % 2 == 1; }));
 
function printValues($values) {
    foreach ($values as $value) {
        echo $value . ' ';
    }
}
 
?>
===================================================================================================
 
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101

Comments