|
|
|
| Всем привет. Помогите мне распределить числа по следующей схеме. Имеем 27 (остаток ширины) блока. Нужно ее распределить между внутренними блоками. Всего блоков допустим 4. Собственно перед первым мы не должны ставить отступ, а ставим между остальными тремя. Расстояния должны быть примерно такими: 9 9 9....Ну это в общем легко. А если будет 26, то в результате должно выйти: 8 9 9 или 9 8 9 или 9 9 8. Где меньшее число роли не играет. Распределение должно быть в цикле естественно. Спасибо. | |
|
|
|
|
|
|
|
для: TetRiska
(03.05.2011 в 15:21)
| | а количество внутренних блоков заранее известно? | |
|
|
|
|
|
|
|
для: Lotanaen
(03.05.2011 в 15:36)
| | да, сначала я узнаю ширину блока главного и передаю данные в пыху, по ранее известной ширине дочернего блока я произвожу деление и узнаю кол. внутренних блоков
П.С. нужно еще распределять так, чтобы не был большой разброс между цифрами, т.е. вариант 7 10 9 не подойдет, а нужно 8 9 9 | |
|
|
|
|
|
|
|
для: TetRiska
(03.05.2011 в 15:43)
| |
$DeltaMid = intval($width/($amount-1));
$Delta = $width%($amount-1);
for ($i=0;$i<$amount-1;$i++) {
if ($Delta >0)
$ArrayDelta[] = $DeltaMid + 1;
else
$ArrayDelta[] = $DeltaMid;
$Delta = $Delta - 1;
}
|
В массиве все нужные вам отступы.
Результат будет например 9 9 8, т.е. сначала большие значения, потом на единицу меньшие. | |
|
|
|
|
|
|
|
для: Lotanaen
(03.05.2011 в 15:59)
| | спасибо Вам, применил так:
$width=26;
$amount=4;
$DeltaMid = intval($width/($amount-1));
$Delta = $width%($amount-1);
for ($i=0;$i<$amount;$i++) {
if ($Delta >0)
$ArrayDelta[] = $DeltaMid + 1;
else
$ArrayDelta[] = $DeltaMid;
$Delta = $Delta - 1;
}
print_r($ArrayDelta);
|
результат
Array ( [0] => 9 [1] => 9 [2] => 8 [3] => 8 )
|
а как чтобы в первом индексе не было числа а был допустим ноль? т.к. первому блоку ненужен отступ, примерно так:
Array ( [0] => 0 [1] => 9 [2] => 9 [3] => 8 )
|
| |
|
|
|
|
|
|
|
для: TetRiska
(03.05.2011 в 16:07)
| | пардон:) не заметил изменения, сейчас
Array ( [0] => 9 [1] => 9 [2] => 8 )
|
а как бы так?
Array ( [0] => 0 [1] => 9 [2] => 9 [3] => 8 )
|
| |
|
|
|
|
|
|
|
для: TetRiska
(03.05.2011 в 16:07)
| |
$width=26;
$amount=4;
$DeltaMid = intval($width/($amount-1));
$Delta = $width%($amount-1);
$ArrayDelta[] = 0;
for ($i=0;$i<$amount;$i++) {
if ($Delta >0)
$ArrayDelta[] = $DeltaMid + 1;
else
$ArrayDelta[] = $DeltaMid;
$Delta = $Delta - 1;
}
print_r($ArrayDelta);
|
перед циклом нулевое значение в массив добавим просто... | |
|
|
|
|
|
|
|
для: Lotanaen
(03.05.2011 в 16:10)
| | большое спасибо :) | |
|
|
|
|
|
|
|
для: TetRiska
(03.05.2011 в 16:16)
| | только цикл все же нужно на единичку уменьшить - как я изначально вам писал | |
|
|
|