|
|
|
| Помогите упростить код....
<?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($A, 0, $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";
}
//...
?>
|
| |
|
|
|
|
|
|
|
для: 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($A, 0, $C)];
|
А когда я заглянул в дерево (функция Tree) , мне стало дурно. | |
|
|
|
|
|
|
|
для: 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? )
спасибо! | |
|
|
|
|
|
|
|
для: freeing
(04.02.2010 в 13:19)
| | по скорости генерации и расходу памяти, file_get_contents - file уступают fopen
Вот ведь идиоты эти разработчики РНР понапридумывали операторов... сделали бы один оператор для всего на свете и дело с концом... мечра программиста... сайт на одном операторе... да чего там сайт... портал на одном операторе... вся вселенная на одном операторе... | |
|
|
|
|
|
|
|
для: Valick
(04.02.2010 в 13:35)
| | я считываю данные из файла и мне по..ен как я получу это строчку, в чем ехидство?
я понимаю что от конкретной задачи зависит что и как делать, но чтение текста! чего уж тут... | |
|
|
|
|
|
|
|
для: freeing
(04.02.2010 в 13:53)
| | Вы привели три разных оператора, которые не нужно сравнивать ни с чем другим, и уж тем более между собой. Нужно всего лишь использовать их по назначению, чего Вы вряд-ли добьетесь с таким подходом. (я считываю данные из файла и мне по..ен как я получу это строчку)
но чтение текста! чего уж тут...
Как раз работа с файлами в сто раз сложнее чем с БД. | |
|
|
|
|
|
|
|
для: 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($A, 0, $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);
}
}
}
}
}
//..
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.02.2010 в 13:07)
| | ясно, нечего упрощать! Спасибо! | |
|
|
|
|
|
|
|
для: 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($A, 0, $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>
|
| |
|
|
|
|