Mad Dogg
Новичок
Теория вывода
Всем здрасьте.
Есть у меня такая маленькая функция.
В ней все просто. Получает cat_id, ищет его в базе и выводит. Только в функции использовано 2 цикла.
Функция news_template просто выводит в нужном месте табличку с переданными в нее данными.
У меня вопрос. Даже два вопроса. Можно ли усовершенствовать функцию так, чтобы использовался только один цикл, и если да, то как это сделать ?
Всем здрасьте.
Есть у меня такая маленькая функция.
PHP:
<?php
function news_print ($cat_id=false) {
$cat_id=intval($cat_id);
if (!$cat_id || $cat_id==0) {
$sql="select top 10 * from dbo.news order by dbo.news.date desc";
$result=mssql_query($sql);
if (@mssql_num_rows($result)>0) {
while ($news=@mssql_fetch_assoc($result)) {
if ($news[expire_date]<time()) continue;
$date[]=date("d.m.y", $news[date]);
$name[]=$news[name];
$description[]=$news[description];
$id[]=$news[id];
}
$columns = 2;
$formatted_date=array_chunk($date, ceil(count($date) / $columns));
$formatted_name=array_chunk($name, ceil(count($name) / $columns));
$formatted_description=array_chunk($description, ceil(count($description) / $columns));
$formatted_id=array_chunk($id, ceil(count($id) / $columns));
$count_1st=count($formatted_name[0]);
$count_2st=count($formatted_name[1]);
echo "<div style='float:left; position:relative; width:50%'>";
for ($i=0; $i<$count_1st; $i++) {
news_template($formatted_date[0][$i], $formatted_name[0][$i], $formatted_description[0][$i], $formatted_id[0][$i]);
}
echo "</div>";
echo "<div style='float:left; position:relative; width:50%'>";
for ($i=0; $i<$count_2st; $i++) {
news_template($formatted_date[1][$i], $formatted_name[1][$i], $formatted_description[1][$i], $formatted_id[1][$i]);
}
echo "</div>";
}
}
}
?>
Функция news_template просто выводит в нужном месте табличку с переданными в нее данными.
У меня вопрос. Даже два вопроса. Можно ли усовершенствовать функцию так, чтобы использовался только один цикл, и если да, то как это сделать ?