Страница 1 из 1

кто тут умный в PHP?

СообщениеДобавлено: 04 май 2008, 19:51
noa
Помогите решить задачку, атоя не программист пхп )

есть конструкция
Код: Выделить всё
            echo '<table>';
            foreach ($this->parent->children[0] as $v) {
               echo "<tr><td>";
               echo $this->getFirstLevelItem($v);
               echo "</td></tr>";
            }
            echo "</table>";

которая выводит
<table>
<tr><td>V1</td><tr>
<tr><td>V2</td><tr>
<tr><td>Vn</td><tr>
</table>

а как бы сделать
<table>
<tr><td>V1</td><td>V2</td><tr>
<tr><td>V3</td><td>V4</td><tr>
<tr><td>V5</td><td>Vn</td><tr>
</table>

подскажите пожалуйста!

Re: кто тут умный в PHP?

СообщениеДобавлено: 05 май 2008, 13:21
EugeneVC
примерно так

Код: Выделить всё
 echo '<table>';
 for($i=0;$i<count($this->parent->children[0]);$i+=2)
 {
  echo "<tr><td>";
  echo $this->getFirstLevelItem($this->parent->children[0][$i]);
  echo "</td><td>";
  echo $this->getFirstLevelItem($this->parent->children[0][$i+1]);
  echo "</td></tr>";
 }
 echo "</table>";


но нужно учесть что количество элементов в массиве должлно быть четным )

Re: кто тут умный в PHP?

СообщениеДобавлено: 05 май 2008, 13:59
Serdar1980
echo '<table border=1>';
$i=0;
$arr=array(1,2,3,4,5,6,7,8,9);
foreach ($arr as $v) {
if (($i%2)==0){ echo "<tr>".chr(13);}
echo "<td>".$v."----".($i % 2)."</td>".chr(13);
$i++;
if ($i==count($arr) && ($i % 2)!=0)echo "<td>&nbsp;<td>".chr(13);
if (($i%2)==0){ echo "</tr>".chr(13);}

}
echo "</table>";

вместо $arr -> $this->parent->children[0]

Re: кто тут умный в PHP?

СообщениеДобавлено: 05 май 2008, 18:28
noa
Так! кто тут модератор???
Мощный! дай мне метлу, я тут уборку сделаю!

Добавлено спустя 18 минут 55 секунд:
Serdar1980 писал(а):echo '<table border=1>';
$i=0;
$arr=array(1,2,3,4,5,6,7,8,9);
foreach ($arr as $v) {
if (($i%2)==0){ echo "<tr>".chr(13);}
echo "<td>".$v."----".($i % 2)."</td>".chr(13);
$i++;
if ($i==count($arr) && ($i % 2)!=0)echo "<td>&nbsp;<td>".chr(13);
if (($i%2)==0){ echo "</tr>".chr(13);}

}
echo "</table>";

вместо $arr -> $this->parent->children[0]


достаточно интересные результаты:
Код: Выделить всё
<table><tr>
<td>1----0</td>
<td>2----1</td>
</tr>
<tr>
<td>3----0</td>
<td>4----1</td>
</tr>
<tr>
<td>5----0</td>
<td>6----1</td>
</tr>
<tr>
<td>7----0</td>
<td>8----1</td>
</tr>
<tr>
<td>9----0</td>
<td>&nbsp;<td>
</table>

чё эти мистические цифры значат ))) не пойму :D

а вообще если убрать строку $arr=array(1,2,3,4,5,6,7,8,9);
и заменить её $this->parent->children[0]
, то пишет Object of class stdClass could not be converted to string in
echo "<td>".$v."----".($i % 2)."</td>".chr(13);


а вот эта незамысловатая конструкция:
Код: Выделить всё
for($i=0;$i<count($this->parent->children[0]);$i+=2)
{
  echo "<tr><td>";
  echo $this->getFirstLevelItem($this->parent->children[0][$i]);
  echo "</td><td>";
  echo $this->getFirstLevelItem($this->parent->children[0][$i+1]);
  echo "</td></tr>";
}

как ни странно работает на массиве в 11 элементов :roul: