Exemplo n.º 1
0
 public static function merge(&$layer, &$external, $i)
 {
     //Используется в configinherit
     if (infra_isEqual($external[$i], $layer[$i])) {
         //Иначе null равено null но null свойство есть и null свойства нет разные вещи
     } elseif (isset(static::$props[$i])) {
         $func = static::$props[$i];
         while (is_string($func)) {
             //Указана не сама обработка а свойство с такойже обработкой
             $func = static::$props[$func];
         }
         $layer[$i] = call_user_func_array($func, array(&$layer[$i], &$external[$i], &$layer, &$external, $i));
     } else {
         if (is_null($layer[$i])) {
             $layer[$i] = $external[$i];
         }
     }
 }
Exemplo n.º 2
0
function xls_processGroupFilter(&$data)
{
    $all = array();
    xls_runGroups($data, function (&$gr) use(&$all) {
        $title = infra_strtolower($gr['title']);
        //echo $title.'<br>';
        if (!isset($all[$title])) {
            $all[$title] = array('orig' => &$gr, 'list' => array());
        } else {
            //Ну вот и нашли повторение
            $all[$title]['list'][] =& $gr;
            //xls_merge($all[$title],$gr);
            //у некой прошлой группы появляются новые childs.. но мы всё ещё бежим по какому-то его childs и новые добавленные будут проигнорированны
            //return new infra_Fix('del');
        }
    });
    infra_foro($all, function (&$des) {
        infra_forr($des['list'], function &(&$gr) use($des) {
            xls_merge($des['orig'], $gr);
            infra_forr($gr['parent']['childs'], function &(&$g) use(&$gr) {
                if (infra_isEqual($g, $gr)) {
                    return new \infra_Fix('del', true);
                }
                $r = null;
                return $r;
            });
            $r = null;
            return $r;
        });
        $r = null;
        return $r;
    });
    /*//$cat=$data['childs'][0];
    	$cat=$data;
    	unset($cat['parent']);
    	infra_forr($cat['childs'],function(&$g){
    		//if(!is_string($g['parent']))
    		$g['parent']=&$g['parent']['title'];
    		//unset($g['parent']);
    		$g['childs']=sizeof($g['childs']);
    		$g['data']=sizeof($g['data']);
    	});
    	echo '<pre>';
    	print_r($cat);
    	exit;
    	/*
    	xls_runGroups($data,function(&$gr,$i,&$group){//Удаляем пустые группы
    		if(!$group) return;//Кроме верхней группы
    		if(!sizeof($gr['childs'])&&!sizeof($gr['data'])){
    			array_splice($group,$i,1);
    		}
    	},array(),true);
    	*/
}