UPDATE. Наверно, я запутано написал. Переформулирую, я хочу создавать таблицы с при помощи самописной функции на основе шаблона одной строки таблицы.
То есть чтобы функция с шаблоном-строкой создавала полностью весь html код для таблицы. Это должно выглядеть примерно вот так
createTable('td1' => #'картинка товара#', 'td2' => '#название товара# Производитель:#название производителя#, страна: #страна производителя#', 'td3' => '#цена товара# руб.').
У меня возникает вопрос, как шаблон-строку преобразовывать в готовый html код?
Изначальный пост с подробностями.
Мне требуется создать много похожих таблиц на основе каталога товаров, для упрощения этой цели логично сделать функцию вывода таблицы по шаблону. С этим у меня возникли трудности.
Для примера, возьму максимально простой шаблон для содержимого одной ячейки таблицы: '
p_id / p_name / p_price'. Соответственно, результат - содержимое ячейки - должно быть такое:
'1 / бокал / 99'.
Шаблон, по идее, надо преобразовать в строку с переменными. Это необходимо сделать один раз, не занимаясь преобразованием шаблона для каждой новой строки таблицы.
Я решил сделать сделать массив для замены известных в шаблоне элементов в ссылки:
$transform = array (
'p_price' => &$arr[ 1 ],
'p_id' => &$arr[ 2 ],
'p_name' => &$arr[ 3 ],
);
Преобразование делается через strtr().
$stringCell = strtr('p_id / p_name / p_price', $transform);
Далее таблица создается циклом:
for($i=0,$n=sizeof($data); $i<$n; $i++) {
$arr = $data[$i];
echo "<tr><td>...</td><td>$stringCell</td></tr>";
}
Все вроде как должно работать и должно получится что-то навроде
<tr><td>...</td><td>1 / бокал / 99</td></tr>
<tr><td>...</td><td>2 / фужер / 12</td></tr>
<tr><td>...</td><td>3 / ложка / 299</td></tr>
, но таблица на выходе пустая. Дело в том, что после strtr() строка не выглядит как
"&$arr[ 1 ] / &$arr[ 2 ] / &$arr[ 3 ]", а выглядит вот так
" / / ".
Как мне заставить все работать правильно, чтобы таблица заполнялась данными? Или может быть надо использовать какой-то другой подход для такой шаблонизации?