Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: упростить синтаксис
 
 автор: freeing   (04.02.2010 в 12:17)   письмо автору
 
 

Помогите упростить код....


<?php

// TPL

    
if(!empty($file_tpl))
    {
        if(
file_exists($file_tpl))
        {
            if(
is_file($file_tpl))
            {
                
$fopen fopen($file_tpl"r");

                if (
$fopen)
                {
                    while (!
feof($fopen))
                    {
                        
$tpl .= fgets($fopen);
                    }

                    
preg_match_all("/<(.*)><(.*)><(.*)>/isU"$tpl$Array);
                }
            }
        }
    }

    foreach (
$Array[1] as $A)
    {
        
$B = &$Map;

        while(
$C strpos($A.".""."$C 1))
        {
            
$B = &$B[substr($A0$C)];
        }
    }

    function 
Tree($URI$Map$ID$Name$Title)
    {
        global 
$Arrays;

        foreach (
$URI[1] as $URI_ID => $URI_Name)
        {
            foreach(
$Name as $Name_ID => $Name_Name)
            {
                if(
$URI[1][$URI_ID] == $Name_Name)
                {
                    if(
is_array($Map[$ID[$Name_ID]]))
                    {
                        
$PURI[] = $Name_Name;

                        
$Arrays[0]=$PURI;

                        foreach(
$Map[$ID[$Name_ID]] as $MA => $MB)
                        {
                            foreach(
$ID as $IDA => $IDB)
                            {
                                if(
$IDB == $MA)
                                {
                                    
$PID[] = $ID[$IDA];
                                    
$PName[] = $Name[$IDA];
                                    
$PTitle[] = $Title[$IDA];

                                    
$Arrays[1]=$PID;
                                    
$Arrays[2]=$PName;
                                    
$Arrays[3]=$PTitle;
                                }
                            }
                        }

                        
Tree($URI$Map[$ID[$Name_ID]], $ID$Name$Title);
                    }
                }
            }
        }
    }

    
Tree($URI$Map$Array[1], $Array[2], $Array[3]);

    if(
is_array($Arrays))
    {
        print 
"<pre>";
        
print_r($Arrays);
    }
    else
    {
        print 
"error 404";
    }

//...

?>

  Ответить  
 
 автор: Trianon   (04.02.2010 в 13:07)   письмо автору
 
   для: freeing   (04.02.2010 в 12:17)
 

Если именно синтаксис, а не логику , то первые два оператора ( условный и цикл) - пожалуйста.
<?
    
if(!empty($file_tpl) && file_exists($file_tpl) && is_file($file_tpl))
        
preg_match_all("/<(.*)><(.*)><(.*)>/isU"file_get_contents($file_tpl), $Array);

    foreach (
$Array[1] as $A)
        for(
$B = &$Map;$C strpos($A.".""."$C 1);)
            
$B = &$B[substr($A0$C)];

А когда я заглянул в дерево (функция Tree) , мне стало дурно.

  Ответить  
 
 автор: freeing   (04.02.2010 в 13:19)   письмо автору
 
   для: Trianon   (04.02.2010 в 13:07)
 

Спасибо за:

    foreach ($Array[1] as $A)
    {
        $B = &$Map;

        while($C = strpos($A.".", ".", $C + 1))
        {
            $B = &$B[substr($A, 0, $C)];
        }
    }

    foreach ($Array[1] as $A)
    {
        for($B = &$Map;$C = strpos($A.".", ".", $C + 1);)
        {
            $B = &$B[substr($A, 0, $C)];
        }
    }


а вот file_get_contents у меня вызывает сомнение
я где-то читал сравнение file_get_contents VS fopen VS file

по скорости генерации и расходу памяти, file_get_contents - file уступают fopen...


    if(!empty($file_tpl))
    {
        if(file_exists($file_tpl))
        {
            if(is_file($file_tpl))
            {
                $fopen = fopen($file_tpl, "r");

                if ($fopen)
                {
                    while (!feof($fopen))
                    {
                        $tpl .= fgets($fopen);
                    }

                    preg_match_all("/".$pattern[2]."/isU", $tpl, $Array);
                }
            }
        }
    }

    if(!empty($file_tpl) && file_exists($file_tpl) && is_file($file_tpl))
    {
        preg_match_all("/<(.*)><(.*)><(.*)>/isU", file_get_contents($file_tpl), $Array);
    }



почему дурно за Tree? )

спасибо!

  Ответить  
 
 автор: Valick   (04.02.2010 в 13:35)   письмо автору
 
   для: freeing   (04.02.2010 в 13:19)
 

по скорости генерации и расходу памяти, file_get_contents - file уступают fopen
Вот ведь идиоты эти разработчики РНР понапридумывали операторов... сделали бы один оператор для всего на свете и дело с концом... мечра программиста... сайт на одном операторе... да чего там сайт... портал на одном операторе... вся вселенная на одном операторе...

  Ответить  
 
 автор: freeing   (04.02.2010 в 13:53)   письмо автору
 
   для: Valick   (04.02.2010 в 13:35)
 

я считываю данные из файла и мне по..ен как я получу это строчку, в чем ехидство?
я понимаю что от конкретной задачи зависит что и как делать, но чтение текста! чего уж тут...

  Ответить  
 
 автор: Valick   (04.02.2010 в 15:56)   письмо автору
 
   для: freeing   (04.02.2010 в 13:53)
 

Вы привели три разных оператора, которые не нужно сравнивать ни с чем другим, и уж тем более между собой. Нужно всего лишь использовать их по назначению, чего Вы вряд-ли добьетесь с таким подходом. (я считываю данные из файла и мне по..ен как я получу это строчку)
но чтение текста! чего уж тут...
Как раз работа с файлами в сто раз сложнее чем с БД.

  Ответить  
 
 автор: freeing   (04.02.2010 в 13:38)   письмо автору
 
   для: Trianon   (04.02.2010 в 13:07)
 

Может так?


<?php

// TPL

    
if(!empty($file_tpl) && file_exists($file_tpl) && is_file($file_tpl))
    {
        
preg_match_all("/<(.*)><(.*)><(.*)>/isU"file_get_contents($file_tpl), $Array);

        foreach (
$Array[1] as $A)
        {
            for(
$B = &$Map;$C strpos($A.".""."$C 1);)
            {
                
$B = &$B[substr($A0$C)];
            }
        }

        
Tree($URI$Map$Array[1], $Array[2], $Array[3]);

        if(
is_array($Arrays)) 
        { 
            print 
"<pre>"
            
print_r($Arrays); 
        } 
        else 
        { 
            print 
"error 404"
        } 
    }

    function 
Tree($URI$Map$ID$Name$Title)
    {
        global 
$Arrays;

        foreach (
$URI[1] as $URI_ID => $URI_Name)
        {
            foreach(
$Name as $Name_ID => $Name_Name)
            {
                if(
$URI[1][$URI_ID] == $Name_Name)
                {
                    if(
is_array($Map[$ID[$Name_ID]]))
                    {
                        
$PURI[] = $Name_Name;

                        
$Arrays[0]=$PURI;

                        foreach(
$Map[$ID[$Name_ID]] as $MA => $MB)
                        {
                            foreach(
$ID as $IDA => $IDB)
                            {
                                if(
$IDB == $MA)
                                {
                                    
$PID[] = $ID[$IDA];
                                    
$PName[] = $Name[$IDA];
                                    
$PTitle[] = $Title[$IDA];

                                    
$Arrays[1]=$PID;
                                    
$Arrays[2]=$PName;
                                    
$Arrays[3]=$PTitle;
                                }
                            }
                        }

                        
Tree($URI$Map[$ID[$Name_ID]], $ID$Name$Title);
                    }
                }
            }
        }
    }

//..

?>

  Ответить  
 
 автор: freeing   (04.02.2010 в 14:33)   письмо автору
 
   для: Trianon   (04.02.2010 в 13:07)
 

ясно, нечего упрощать! Спасибо!

  Ответить  
 
 автор: freeing   (04.02.2010 в 16:03)   письмо автору
 
   для: Trianon   (04.02.2010 в 13:07)
 

Программисты делятся на две категории, понимающие и нет...
если они НЕ понимаю код! говорят - та это ггггкод....
если понимаю дают дельный совет..


а вообще это лень, тупо лень ))

и понеслась )


<?php

// TPL

    
function Tree($URI$Map$ID$Name$Title)
    {
        if(!empty(
$URI) && !empty($Map) && !empty($ID) && !empty($Name) && !empty($Title))
        {
            global 
$History$Page$Page_Sub;

            foreach (
$URI[1] as $URI_ID => $URI_Name)
            {
                foreach(
$Name as $Name_ID => $Name_Name)
                {
                    if(
$URI[1][$URI_ID] == $Name_Name)
                    {
                        if(
is_array($Map[$ID[$Name_ID]]))
                        {
                            
$History[0][] = $ID[$Name_ID];
                            
$History[1][] = $URI_Name;
                            
$History[2][] = $Title[$Name_ID];

                            
$Page[0] = $ID[$Name_ID];
                            
$Page[1] = $Name_Name;
                            
$Page[2] = $Title[$Name_ID];

                            foreach(
$Map[$ID[$Name_ID]] as $MA => $MB)
                            {
                                foreach(
$ID as $IDA => $IDB)
                                {
                                    if(
$IDB == $MA)
                                    {
                                        
$PID[] = $ID[$IDA]; 
                                        
$PName[] = $Name[$IDA];
                                        
$PTitle[] = $Title[$IDA]; 

                                        
$Page_Sub[0]=$PID
                                        
$Page_Sub[1]=$PName;
                                        
$Page_Sub[2]=$PTitle
                                    }
                                }
                            }

                            
Tree($URI$Map[$ID[$Name_ID]], $ID$Name$Title);
                        }
                    }
                }
            }
        }
    }

    if(!empty(
$file_tpl) && file_exists($file_tpl) && is_file($file_tpl))
    {
        
preg_match_all("/".$pattern[2]."/isU"file_get_contents($file_tpl), $Array);

        if(!empty(
$URI) && is_array($URI) && !empty($Array) && is_array($Array))
        {
            foreach (
$Array[1] as $A)
            {
                for(
$B = &$Map;$C strpos($A.".""."$C 1);)
                {
                    
$B = &$B[substr($A0$C)];
                }
            }

            
Tree($URI$Map$Array[1], $Array[2], $Array[3]);

            if(
is_array($Page) && is_array($Page_Sub))
            {
                foreach(
$Page_Sub as $AA => $BB)
                {
                    foreach(
$Page_Sub[$AA] as $CC)
                    {
                        
$Page_Sub[$AA] = array_unique($Page_Sub[$AA]);
                    }
                }

                foreach(
$Page_Sub[1] as $A => $B)
                {
                    
$g $B."/";

                    print 
"<a href=\"".$B."/\">".$Page_Sub[2][$A]."<a><br>";
                }

                print 
"<pre>";

                
print_r($History);
                
print_r($Page);
                
print_r($Page_Sub);
            }
        }
    }

//..

?>


это хороший на мой взгляд движок на основе файлов типа:



<1><ru><Заголовок ru>
    <1.1><company><Заголовок company>
    <1.2><news><Заголовок news>
    <1.3><tree><PHP File Tree>
        <1.3.1><jQuery><Заголовок users>
        <1.3.2><help><Заголовок help>
            <1.3.2.1><help1><Заголовок help1>
            <1.3.2.2><help2><Заголовок help2>
        <1.3.3><work><Заголовок work>
        <1.3.4><faq><Заголовок faq>
            <1.3.4.1><faq1><Заголовок faq1>
            <1.3.4.2><faq2><Заголовок faq2>
            <1.3.4.3><faq3><Заголовок faq3>
            <1.3.4.4><faq4><Заголовок faq4>
        <1.3.5><image><Заголовок image>
        <1.3.6><forum><Заголовок forum>
        <1.3.7><forum7><Заголовок forum7>
        <1.3.8><forum8><Заголовок forum8>
        <1.3.9><forum9><Заголовок forum9>
        <1.3.10><forum10><Заголовок forum10>
        <1.3.11><forum11><Заголовок forum11>
    <1.4><contacts><Заголовок contacts>
    <1.5><map><Заголовок map>
<2><en><Title en>
    <2.1><company><Title company>
    <2.2><news><Title news>
    <2.3><about><Title about>
        <2.3.1><users><Title users>
        <2.3.2><help><Title help>
            <2.3.2.1><help1><Title help1>
            <2.3.2.2><help2><Title help2>
        <2.3.3><work><Title work>
        <2.3.4><faq><Title faq>
            <2.3.4.1><faq1><Title faq1>
            <2.3.4.2><faq2><Title faq2>
            <2.3.4.3><faq3><Title faq3>
            <2.3.4.4><faq4><Title faq4>
        <2.3.5><image><Title image>
        <2.3.6><forum><Title forum>
    <2.4><contacts><Title contacts>
    <2.5><map><Title map>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования