нужна помощь с циклами массивов php-шаблонов

-Woland-

Пользователь
Регистрация
25.01.12
Сообщения
8
Реакции
0
Баллы
1
Может ли кто-нибудь помочь мне с этим?

Я пытаюсь перебрать массивы, чтобы поместить их в шаблон и показать несколько сообщений на странице, используя этот шаблон. Но я не могу заставить это работать и не знаю почему. Я новичок в ООП и не до конца его понимаю. Это кажется общим, и это должно быть легко сделать, но у меня продолжают возникать проблемы.

Я могу заставить его работать, если введу массивы вручную, но это не поможет мне, если я вытащу данные из базы данных и пройдусь по ним.
нужна помощь с циклами массивов php-шаблонов
вот о чем я говорю: из этого класса: https://github.com/isRuslan/php-template

Я не могу заставить эту часть работать в шаблоне

Код:
$names = array('test1', 'test2', 'test3');
$names2 = array('test2 1', 'test2 2', 'test2 3');
$template->assign('people', array( array('name' => $names), array('name2' => $names2)
));

PHP: Я пытаюсь использовать это для отображения массивов, извлеченных из базы данных, и теперь мне повезло.
$template->assign('items', array( array('name' => 'First'), array('name' => 'Second') ));
PHP: любая помощь....пожалуйста.
 

rocksttr1

Пользователь
Регистрация
08.01.13
Сообщения
2
Реакции
0
Баллы
1
Слишком много обдумываю. При работе с PHP следует помнить одну вещь: «да, у нас есть для этого функция». В этом случае вам, скорее всего, следует использовать «array_map».

Кроме того, сейчас 2020 год, а не 2005 год, хватит говорить «массив» все это время.




Код:
$names = ['Bob', 'Ralph', 'Mike'];
$ranks = ['Col.', 'Gen.', 'Adm.'];
$template_array = [];
foreach ($names as $index => $name) $template_array[] = [
'NAME' => $name,
'RANK' => $ranks[$index]
];
$template->assign('people', $template_array);



Код (разметка): Вы могли бы даже подумать об отказе от «переменной даром» в последних двух строках и просто:

<?php $names = [ 'Bob', 'Ralph', 'Mike' ]; $ranks = [ 'Col.', 'Gen.', 'Adm.' ]; $template->assign('people', array_map(function($a, $b) { return [ 'NAME' => $a, 'RANK' => $b ]; }, $names, $ranks));
Код (разметка): если вы не планируете повторно использовать массив позже на своей странице.

Возможно, даже стоит использовать анонимную функцию.

$template->assign('people', array_map('nameRankPair', $names, $ranks));
Код (разметка): хотя мне это не нравится из-за недостаточной ясности кода, это тоже правильный подход.

Единственное преимущество, которое дает подход «пока», заключается в том, что он МОЖЕТ работать быстрее, поскольку не задействованы накладные расходы на вызовы функций, но на самом деле вам было бы лучше использовать FOREACH, если бы это было так, и оптимизация скорости была важна.

$names = [ 'Bob', 'Ralph', 'Mike' ]; $ranks = [ 'Col.', 'Gen.', 'Adm.' ]; function nameRankPair($a, $b) { return [ 'NAME' => $a, 'RANK' => $b ]; } $template_array = array_map('nameRankPair', $names, $ranks); $template->assign('people', $template_array);
Код (разметка): Вероятно, это будет самый быстрый из возможных подходов.
 

legionergry

Пользователь
Регистрация
13.09.11
Сообщения
2
Реакции
0
Баллы
1
неважно, кто-то помог мне добраться туда.

кому интересно:
Код:
$names = array('Bob', 'Ralph', 'Mike');
$names2 = array('Col.', 'Gen.', 'Adm.');
$i = 0;
$template_array = array();
while($i < 3)
{ $template_array[] = array('NAME' => $names[$i], 'RANK' => $names2[$i]); $i++;
}
$template->assign('people', $template_array);
PHP:
 
Сверху Снизу