Начал писать собственный template class для своего сайта, весь класс работает, теперь начал писать вывод массива в шаблон и тут мне возвращает правильное количество линий только проблема в том что каждая линия в шаблон равно первой линии в цикле, как можно исправить ?
array
$allpm[] = array('id'=> '11', 'string'=> 'text 1');
$allpm[] = array('id'=> '22', 'string'=> 'text 2');
$allpm[] = array('id'=> '33', 'string'=> 'text 3');
функция что перерабатывает цикл (через print_r показывает все 3 линии правильно)
if (stristr($this->template, "{loop item=")) {
preg_match('/{loop item=([a-z]+)\}(.*?){\/loop}/s', $this->template, $loopvar);
if (count($this->loop_data[$loopvar[1]])) {
$loop_content = '';
foreach ($this->loop_data[$loopvar[1]] as $main_loop) {
foreach($main_loop as $key_find => $key_replace) {
$find_item[] = '/{'.$key_find.'}/';
$replace_item[] = $key_replace;
}
$loop_content .= preg_replace($find_item,$replace_item, $loopvar[2]);
}
$result = preg_replace( "/{loop item=([a-z]+)\}(.*?){\/loop}/s",$loop_content, $result);
}
}
в шаблоне так
{loop item=allpm}
id:{id}, string: {string}<br>
{/loop}
но на выходе всегда выходит
id:11, string: text 1
id:11, string: text 1
id:11, string: text 1
У вас накапливаются элементы в массивах $find_item и $replace_item.
var_dump($find_item);
var_dump($replace_item);
Если добавить эти две строчки после внутреннего цикла, будет такой вывод:
После первого прохода:
array(2) {
[0]=>
string(6) "/{id}/"
[1]=>
string(10) "/{string}/"
}
array(2) {
[0]=>
string(2) "11"
[1]=>
string(6) "text 1"
}
После второго прохода:
array(4) {
[0]=>
string(6) "/{id}/"
[1]=>
string(10) "/{string}/"
[2]=>
string(6) "/{id}/"
[3]=>
string(10) "/{string}/"
}
array(4) {
[0]=>
string(2) "11"
[1]=>
string(6) "text 1"
[2]=>
string(2) "22"
[3]=>
string(6) "text 2"
}
Добавьте код, инициализирующий эти массивы перед внутренним циклом, и проблема уйдет.
$find_item = array();
$replace_item = array();
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости