Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод информации по несколько рядов

Сообщения:  [1-10]    [11-20]  [21-25] 

 
 автор: cheops   (31.03.2007 в 02:16)   письмо автору
 
   для: Trianon   (30.03.2007 в 13:48)
 

Тут поддерживаю Trianon - лучше не использовать Perl-овские штучки (тем более безобразно описанные в PHP)... Код, если и критиковал когда, то только из-за его "хитрости" - т.е. оправданной сложности... У меня сложилось впечатление, что вы никогда не упускаете возможности сделать код более эффективным, если такая возможность имеется, если такой возможности нет, то стремитесь к читабельному коду (без дела ни один трюк не применяли)... Так программируют системщики и микроэлектронщики... Я всегда с прикладными задачами возился, где на первом месте читабельность (даже в ущерб производительности), так как нужно отвлечься от внутренней реализации и оперировать реальными объектами и их взаимодействием, т.е. программирование протекает на более высоком абстрактном уровне - если код будет сложный - как правило, проект захлёбывается.

PS Подходы понятно почему такие складываются, системный код живёт много дольше прикладного. В системном коде важна эффективность, в прикладном - скорость его разработки. Хотя деление, конечно, условное и прикладной код может жить десятилетиями и железки выпускать иногда требуется очень быстро.

   
 
 автор: Trianon   (30.03.2007 в 13:48)   письмо автору
 
   для: Webmaster-X   (30.03.2007 в 13:35)
 

Потому что, прочтя эту строку , я стал опасаться за своё :)))

Я вроде знаю и пользуюсь и функцией list() и функцией each(), последней, правда, реже.
Но вид этой строки заставил меня перечитывать мануал.
Причем в мануале я не обнаружил разрешения опускать начальные элементы списка.
Пришлось писать тестовый пример, чтобы понять, что ж Вы всё же хотели выразить.
У меня получилось, что в конечном итоге от всего массива list() оставил оодин элемент.

Если вся эта гирлянда была затеяна только для того, чтоб объединить while и изъятие из 1-го элемента массива, то я пас. Не должен человек столько думать, пытаясь понять написанный цикл.

Это всё IMHO конечно.
По моему глубокому убеждению, вопросы стиля нельзя навязывать.
Их можно лишь согласовывать (правда, работая в команде, это уже нужно делать. )
Так что то, что я написал - исключительно личная реакция на увиденное, а вовсе не догма.


Интересно мнение Cheops'а послушать. Он, наоборот, обычно мой стиль не переносит, из-за того, что я, там где это можно, стараюсь использовать условные операции вместо операторов, и пытаюсь не засорять код лишними фигурными скобками. Интересно, что он скажет про Ваш....

   
 
 автор: Valick   (30.03.2007 в 13:42)   письмо автору
 
   для: Trianon   (30.03.2007 в 13:35)
 

Да вчера позно было, и с одним & у меня не получилось)))) а с утра дошло, но руки не дошли, а вот то что инкремент в условие перенести я не догадался, спасибо.. я всегда говорил, что со стороны виднее)

   
 
 автор: 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>"; 

Но Вы ж понимаете - тут дело вкуса....

   
 
 автор: Webmaster-X   (30.03.2007 в 13:35)   письмо автору
 
   для: Trianon   (30.03.2007 в 12:55)
 

Trianon, почему вам непонравилось и если можна заменить на более лучшую структуру подскажите как?

   
 
 автор: Trianon   (30.03.2007 в 13:32)   письмо автору
 
   для: Valick   (30.03.2007 в 13:23)
 

Никаких особых ужасов не увидел.
Разве только количество столбцов в последней строке при таком подходе оказывается обычно несогласованным с предыдущими....

   
 
 автор: 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)
?>


Хочу ещё помудрить с условиями, так для общего развития)

   
 
 автор: Trianon   (30.03.2007 в 12:55)   письмо автору
 
   для: Webmaster-X   (30.03.2007 в 12:49)
 

я буду обеспокоен здоровьем того, кому вот это while(list(,$array)=each($base)) понадобится.

   
 
 автор: Webmaster-X   (30.03.2007 в 12:49)   письмо автору
 
   для: provodnik   (29.03.2007 в 13:43)
 

provodnik, спасибо. Твой сод будет получше, может комуто ещё понадобится

Я переписал его под себя следующим образом


<?
echo "<table><tr>"
$i=0
$ROW_COUNT=// Количество <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>";
?>

   
 
 автор: provodnik   (29.03.2007 в 13:43)   письмо автору
 
   для: Webmaster-X   (29.03.2007 в 12:15)
 

Это мой рабочий код на основе получения данных из MySql. Может он пойдет, в качестве примера:

<?
$query 
mysql_query("SELECT * FROM tbl")
echo 
"<table><tr>";
$i=0;
$ROW_COUNT=// Количество <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>";
?>

   

Сообщения:  [1-10]    [11-20]  [21-25] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования