Пример #1
0
 public static function &exec(&$el, $callback, &$_group = null, $_key = null)
 {
     //Бежим по массиву рекурсивно [1, [3, 4], 3]
     if (Each::isAssoc($el) === false) {
         for ($i = 0, $l = sizeof($el); $i < $l; $i++) {
             $r =& Each::exec($el[$i], $callback, $el, $i);
             if (!is_null($r)) {
                 return $r;
             }
         }
     } elseif (!is_null($el)) {
         //Если undefined callback не вызывается, Таким образом можно безжать по переменной не проверя определена она или нет.
         $r =& $callback($el, $_key, $_group);
         return $r;
     } else {
         return $el;
     }
     return $r;
 }
Пример #2
0
    $r = null;
    $counter++;
    if ($counter === 3) {
        assert(6 === $b);
    }
    return $r;
});
assert(4 === $counter);
$counter = 0;
$el = 1;
Each::exec($el, function &() use(&$counter) {
    $r = null;
    $counter++;
    return $r;
});
assert(1 === $counter);
$el = 'test';
Each::exec($el, function &() use(&$counter) {
    $r = null;
    $counter++;
    return $r;
});
assert(2 === $counter);
$el = ['name' => 'oduvanio', 'email' => 'mail'];
Each::exec($el, function &() use(&$counter) {
    $r = null;
    $counter++;
    return $r;
});
assert(3 === $counter);
echo '{"result": 1}';
Пример #3
0
$el = ['oduvanio', 'mail'];
Each::exec($el, function () use(&$counter) {
    $counter++;
});
assert(2 === $counter);
$counter = 0;
$el = [2, [4, 6], 5];
Each::exec($el, function ($b) use(&$counter) {
    $counter++;
    if ($counter === 3) {
        assert(6 === $b);
    }
});
assert(4 === $counter);
$counter = 0;
$el = 1;
Each::exec($el, function () use(&$counter) {
    $counter++;
});
assert(1 === $counter);
$el = 'test';
Each::exec($el, function () use(&$counter) {
    $counter++;
});
assert(2 === $counter);
$el = ['name' => 'oduvanio', 'email' => 'mail'];
Each::exec($el, function () use(&$counter) {
    $counter++;
});
assert(3 === $counter);
echo '{"result": 1}';