Разбиение массива

netdog

net @
>Нет дог, а такое понятие, как "вложенные таблицы"
>тебе знакомо?
Знакомо...

>А перевести на следующую строку можно только тегом
>tr - иникак иначе?
>br уже не котируется, да?

Не котируется если надо сделать красивую таблицу с разделенными строками(визуально)
 

netdog

net @
>я не заметил
Ну то что ты не заметил это не мои проблемы ;)

Это всёравно не совсем то.
 

Dem0nx

Guest
Короче всё я сделал верно:
$arr = array("1c", "2c", "3c", "4c", "5c", "6c", "7c");
for ($i = 1; $i <= ceil(count($arr)/3); $i++)
{
$n1 = $i - 1;
$n2 = floor($i + count($arr) - count($arr)/3*2);
$n3 = ceil($i + count($arr) - count($arr)/3) - $k;
print "$arr[$n1] - $arr[$n2] - $arr[$n3] <br>";
}
$k - должен изменятся если в массиве 5,8,11,14,17 элементов(т.е. через 3) на -1, а если нет то на 0
Поняли? А тпереь как так подсчитать сколко в массиве элементов?
Я же не буду делать так:
If (count($arr) == 5 or count($arr) == 8 or count($arr) == 11 or count($arr) == 14 .....)
{
$k = -1;
}
else
{
$k = 0;
}
Как упростить?
 

RomikChef

Guest
господи.

УСЛОЖНЯТЬ НЕ НАДО!
Все делается средствами HTML!!!

еще раз повторяю!
Считаешь строки!
когда наступает три - начинаешь новую колонку!!!
 

netdog

net @
PHP:
$arr = array("1c", "2c", "3c", "4c", "5c", "6c", "7c","8c","9c","10c");

$i=0;
$kr=3; // строк
$td='';
echo '<table><tr>';
foreach ($arr as $v)
{
if (($i%$kr)==0){
echo $td;$td="</td>";
echo '<td valign="top">';
}
echo $v.'<br>';



$i++;
}

echo '<tr></table>';
 

Dem0nx

Guest
Спасибо Net Dog!!! Я тебя поздравляю! Наконец то..
Теперь разъясни как это ты сделал? Всё по порядку.
 

netdog

net @
Этот вариант я написал еще час назад, но я хотел добиться другого... с полноценной табцицей...
 

Dem0nx

Guest
Всё, разгадал загадку =)
$arr = array("1c", "2c", "3c", "4c", "5c", "6c", "7c");
if ((ceil(count($arr)/3)*3) - count($arr) == 1)
{
$k1 = 0;
$k2 = 1;
}
elseif ((ceil(count($arr)/3)*3) - count($arr) == 0)
{
$k1 = 1;
$k2 = 1;
}
print "<table border=\"1\">\n";
for ($i = 1; $i <= ceil(count($arr)/3); $i++)
{
$n1 = $i - 1;
$n2 = floor($i + count($arr) - count($arr)/3*2) - $k1;
$n3 = ceil($i + count($arr) - count($arr)/3) - $k2;
print "<tr><td>$arr[$n1]</td><td>$arr[$n2]</td><td>$arr[$n3]</td></tr>";
}
print "</table>\n";
 

RomikChef

Guest
Нет Дог, он еще вернется к твоему варианту. Когда начнет осваивать базы данных.

Хотя с таким стремлением делать сложно то, что можно сделать проще, он напишетдесяток страниц кода вместо одной строчки.
 

Dem0nx

Guest
RomikChef кстати хоттите знать для чего мне это надо было? :)
 

RomikChef

Guest
Для ответа на вопрос в лабораторной или контрольной.
 

RomikChef

Guest
Боже мой.
Это ему для работы с базой данных.

Я прямо как в воду глядел.
И ведь будет доставать сначала все данные в массив (первый цикл, расход памяти), а потом выводить их (второй цикл).
плюс тонна кода.
Ну не понимаю я таких людей.
Сделать все одной строчкой и не париться - это не для них.
 

RomikChef

Guest
но даже и для твоего способа вся эта ботва с цейлами и флорами - лишняя.

цейл нужен только один. один раз поделить количество элементов на количество строк. И ВСЕ!
и в цикле выводить!

Нет дог, ты тоже какой-то фигни понаписал. Какая-то смесь двух подходов, плюс тонна ненужного кода.
 

netdog

net @
2 RomikChef.
Ну не скажу что тонна...
Ну то, что там есть что-то лишнее, я не отрицаю.
Но алгоритм уже больше не упростишь (имхо)...

Про целлы и флоры... Там их тока 2 celil'a и 1 round(лишний) забыл снести...
Можно было обойтись 1 celil'ом НО суть всёравно не в этом.


p.s. Упростишь код(алгоритм), Только Велком, интересно будет узнать более простой вариант.
p.s.s. хоть мне эта `обратная таблица` нафиг никуда не надо, было полезно/интересно поднапрячь мозги... ;)
 
Сверху