Пример #1
0
 public static function &foro(&$obj, $callback, $back = false)
 {
     //Бежим по объекту
     if (is_array($back)) {
         $nar = $back;
         $back = false;
     }
     $r = null;
     if (Each::isAssoc($obj) !== true) {
         return $r;
     }
     //Только ассоциативные массивы
     $ar = array();
     foreach ($obj as $key => &$val) {
         $ar[] = array('key' => $key, 'val' => &$val);
     }
     return Each::forr($ar, function &(&$el) use($callback, &$obj) {
         if (is_null($el['val'])) {
             return $el['val'];
         }
         $r =& $callback($el['val'], $el['key'], $obj);
         if (is_null($r)) {
             return $r;
         }
         if ($r instanceof Fix) {
             if ($r->opt['del']) {
                 unset($obj[$el['key']]);
             }
             if (!is_null($r->opt['ret'])) {
                 return $r->opt['ret'];
             }
         } else {
             return $r;
         }
     }, $back);
 }
Пример #2
0
if (!is_file('vendor/autoload.php')) {
    chdir('../../../');
    //Согласно фактическому расположению файла
    require_once 'vendor/autoload.php';
}
/**
 * Проверка на ассоциативный массив.
 * Метод возвращает true только в том случае, если массив ассоциативный.
 */
$elements = ['9' => '42', 8, 4, 5, 3];
assert(true === Each::isAssoc($elements));
$elements = 10;
assert(null === Each::isAssoc($elements));
$elements = [9, 8, 4, 5, 3];
assert(false === Each::isAssoc($elements));
/**
 * Проверка на число.
 * Если передано число в текстовом формате, то метод должен отработать
 * с этим аргументом как с числом.
 */
$el = '';
assert(false === Each::isInt($el));
$el = 12;
assert(true === Each::isInt($el));
$el = '12';
assert(true === Each::isInt($el));
$el = '12 ';
assert(false === Each::isInt($el));
/**
 * Проверка ссылок друг на друга.
Пример #3
0
        //array_unshift($now,array('external'=>&$ext));
        array_push($now, array('external' => &$j));
    });
    return $now;
}, 'external' => function (&$now, &$ext) {
    //Используется в global.js, css
    if (!$now) {
        $now = array();
    } elseif (Each::isAssoc($now) !== false) {
        $now = array(&$now);
    }
    array_push($now, $ext);
    return $now;
}, 'config' => function (&$now, &$ext, &$layer) {
    //object|string any
    if (Each::isAssoc($ext) === true) {
        if (!$now) {
            $now = array();
        }
        foreach ($ext as $j => $v) {
            if (!is_null(@$now[$j])) {
                continue;
            }
            $now[$j] =& $ext[$j];
        }
    } else {
        if (is_null($now)) {
            $now =& $ext;
        }
    }
    return $now;