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); }
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)); /** * Проверка ссылок друг на друга.
//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;