|
|
|
|
|
для: Trianon
(30.03.2007 в 13:48)
| | Тут поддерживаю Trianon - лучше не использовать Perl-овские штучки (тем более безобразно описанные в PHP)... Код, если и критиковал когда, то только из-за его "хитрости" - т.е. оправданной сложности... У меня сложилось впечатление, что вы никогда не упускаете возможности сделать код более эффективным, если такая возможность имеется, если такой возможности нет, то стремитесь к читабельному коду (без дела ни один трюк не применяли)... Так программируют системщики и микроэлектронщики... Я всегда с прикладными задачами возился, где на первом месте читабельность (даже в ущерб производительности), так как нужно отвлечься от внутренней реализации и оперировать реальными объектами и их взаимодействием, т.е. программирование протекает на более высоком абстрактном уровне - если код будет сложный - как правило, проект захлёбывается.
PS Подходы понятно почему такие складываются, системный код живёт много дольше прикладного. В системном коде важна эффективность, в прикладном - скорость его разработки. Хотя деление, конечно, условное и прикладной код может жить десятилетиями и железки выпускать иногда требуется очень быстро. | |
|
|
|
|
|
|
|
для: Webmaster-X
(30.03.2007 в 13:35)
| | Потому что, прочтя эту строку , я стал опасаться за своё :)))
Я вроде знаю и пользуюсь и функцией list() и функцией each(), последней, правда, реже.
Но вид этой строки заставил меня перечитывать мануал.
Причем в мануале я не обнаружил разрешения опускать начальные элементы списка.
Пришлось писать тестовый пример, чтобы понять, что ж Вы всё же хотели выразить.
У меня получилось, что в конечном итоге от всего массива list() оставил оодин элемент.
Если вся эта гирлянда была затеяна только для того, чтоб объединить while и изъятие из 1-го элемента массива, то я пас. Не должен человек столько думать, пытаясь понять написанный цикл.
Это всё IMHO конечно.
По моему глубокому убеждению, вопросы стиля нельзя навязывать.
Их можно лишь согласовывать (правда, работая в команде, это уже нужно делать. )
Так что то, что я написал - исключительно личная реакция на увиденное, а вовсе не догма.
Интересно мнение Cheops'а послушать. Он, наоборот, обычно мой стиль не переносит, из-за того, что я, там где это можно, стараюсь использовать условные операции вместо операторов, и пытаюсь не засорять код лишними фигурными скобками. Интересно, что он скажет про Ваш.... | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2007 в 13:35)
| | Да вчера позно было, и с одним & у меня не получилось)))) а с утра дошло, но руки не дошли, а вот то что инкремент в условие перенести я не догадался, спасибо.. я всегда говорил, что со стороны виднее) | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2007 в 13:32)
| | Условие смены строк я написал бы не так
$i++;
if ($s) if(($i % $s)==0) echo "</tr><tr>";
| а так
if ($s && !(++$i % $s))
echo "</tr><tr>";
|
Но Вы ж понимаете - тут дело вкуса.... | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2007 в 12:55)
| | Trianon, почему вам непонравилось и если можна заменить на более лучшую структуру подскажите как? | |
|
|
|
|
|
|
|
для: Valick
(30.03.2007 в 13:23)
| | Никаких особых ужасов не увидел.
Разве только количество столбцов в последней строке при таком подходе оказывается обычно несогласованным с предыдущими.... | |
|
|
|
|
|
|
|
для: Trianon
(30.03.2007 в 12:55)
| | Trianon, взгляните на мой код, если не трудно:
<?php
function arr_echo($base,$s)
{
$i=0;
if (empty($base)) exit;
if (empty($s)) $s=false;
echo "<table align='center' border='1'><tr>";
foreach ($base as $key => $val)
{
echo "<td valign='top'>$key<br>";
foreach ($val as $str)
{
echo "$str<br>";
}
echo "</td>";
$i++;
if ($s) if(($i % $s)==0) echo "</tr><tr>";
}
echo "</tr></table><br>";
}
$base=array(
"категория1"=>array("описание1","описание2","описание3","описание4",),
"категория2"=>array("описание1","описание2","описание3","описание4","описание5","описание6",),
"категория3"=>array("описание1","описание2","описание3","описание4","описание5"),
"категория4"=>array(),
"категория5"=>array("описание1","описание2","описание3","описание4","описание5"),
// и так дальше...
);
arr_echo($base,2)
?>
|
Хочу ещё помудрить с условиями, так для общего развития) | |
|
|
|
|
|
|
|
для: Webmaster-X
(30.03.2007 в 12:49)
| | я буду обеспокоен здоровьем того, кому вот это while(list(,$array)=each($base)) понадобится. | |
|
|
|
|
|
|
|
для: provodnik
(29.03.2007 в 13:43)
| | provodnik, спасибо. Твой сод будет получше, может комуто ещё понадобится
Я переписал его под себя следующим образом
<?
echo "<table><tr>";
$i=0;
$ROW_COUNT=3 // Количество <td> в строке таблицы
while(list(,$array)=each($base))
{
$i++;
$arr = explode("::",$array);
echo "<td>" . $arr[3] . "</td>\n";
if(($i % $ROW_COUNT)==0) echo "</tr><tr>\n";
}
echo"\n</tr>\n</table>";
?>
|
| |
|
|
|
|
|
|
|
для: Webmaster-X
(29.03.2007 в 12:15)
| | Это мой рабочий код на основе получения данных из MySql. Может он пойдет, в качестве примера:
<?
$query = mysql_query("SELECT * FROM tbl")
echo "<table><tr>";
$i=0;
$ROW_COUNT=3 // Количество <td> в строке таблицы
while($a = mysql_fetch_array($query))
{
$i++;
echo "<td>";
echo $a['id'];
echo "</td>";
if(($i % $ROW_COUNT)==0) echo "</tr><tr>";
}
echo"</tr></table>";
?>
|
| |
|
|
|
|