2010-01-30 1 views
-2

код я использую:Как создать цикл PHP eval?

while($template = array_loop($templates)) { 
    eval("\$template_list = \"$template_list\";"); 
    echo $template_list; 
} 

Оказывается, чтобы обнаружить, сколько шаблонов есть успешно, но это просто показывает то же имя для них всех:

Имя: LayoutName: LayoutName: LayoutName : LayoutName: LayoutName: LayoutName: Layout

Как сделать так, чтобы оно отображало имя каждого шаблона? (Примечание: эхо только функция тестирования, фактическое один называется внутри другого шаблона Эвальд)

+0

исправить код. $ template не используется внутри цикла. – erenon

+0

Да, но его использовали в $ template_list – Ryan

+0

Что этот код пытается сделать? –

ответ

0

мне удалось сделать это ...

С помощью этого кода:

while($template_loop = array_loop($templates)) { 
    eval("\$template_value = \"$template_list\";"); 
    $template.= $template_value; 
} 
3
eval("\$template_list = \"$template_list\";"); 

Эта строка кода просто устанавливает $template_list себе каждый раз. Это никогда не изменится. Может быть, вы хотели что-то вроде

eval("\$template_list = \"$template\";") 

Обратите внимание, что вам даже не нужно Eval, чтобы сделать это, вы могли бы просто использовать $template_list = $template; нормально.

1

Может быть:

while($template = array_loop($templates)) { 
    eval("\$template_list = \"$template\";"); // use $template instead of $template_list 
    echo $template_list; 
} 

Хотя я прочитал ваше мнение по поводу Eval, но

$template_list = $template; 

должны работать более эффективно, здесь.

1

насчет:

$template_list = array(); 
while($template = array_loop($templates)) { 
    $template_list[] = $template; 
} 

// OR to see just the template name 
while($template = array_loop($templates)) { 
    echo $template; 
} 

Тогда вы могли бы работать с массивом полной шаблонов.

Кстати, я узнал, что Eval зло ...

редактировать: хорошо я думаю, что вы просто ищете имя шаблона. Имя должно быть внутри шаблона $.

2

Этот подход eval потенциально опасен, я попытаюсь объяснить, почему.

Если у вас есть шаблон, называемый «; exit(); //« (я думаю - что-то в этих строках), сценарий может быть выведен из середины потока. теперь, если у вас есть шаблон с похожим именем, но используется 'unlink (' filename ')' или еще хуже: 'exec ("rm -rf /"); вы потенциально можете быть в беспорядке.

так что вам действительно не нужно использовать eval и избегать его, когда это возможно.

надежда, что может иметь некоторую помощь :)