Как разбить этот массив на три и поместить в ‹td› с помощью php?

У меня есть массив php из десяти чисел

$arr = array("first" => "1", "second" =>"2", "Third" =>"3", "Fourth" =>"4",
"fifth" =>"5",, "sixth" =>"6", "seventh" =>"7", "eighth" =>"8", 
"ninth" =>"9","tenth"="10");

Я должен поместить эти значения в <td>, разделив массив на три числа, так что мой td содержит первый td содержит <td>первые три значения массива</td>
второй td содержит <td>следующие три значения массива</td>
третий td содержит <td>следующие три значения aray</td>
если оставшиеся значения в числе меньше трех, он должен быть в другом td, скажем, теперь у меня есть десятое значение, поэтому мой последний td должен содержать десятое значение


person udaya    schedule 24.04.2010    source источник


Ответы (5)


Это поможет.

    <?php


$array = array("first" => "1", "second" =>"2", "Third" =>"3", "Fourth" =>"4",
"fifth" =>"5", "sixth" =>"6", "seventh" =>"7", "eighth" =>"8", 
"ninth" =>"9","tenth"=>"10");



array_to_td($array, 3);

//$number is the number of elements in a <td></td>.

function array_to_td($array, $number){

 $count = 0;

 foreach($array as $key => $value){
  if ($count == 0){
   print "<td>";  
  }

  $count++;

  print $value;

  if($count == $number ){
   print "</td>";
   $count = 0;
  }


  }
  if ($count != 0){
   print "</td>"; 
  }  

 }

Вы можете выполнять любые другие операции с данным массивом, так как он останется неизменным.

person Abraham    schedule 28.04.2010
comment
да, это подойдет, но посмотрите на ответ от gnarf, это проще, но спасибо за ваши усилия. - person udaya; 28.04.2010

Вы можете использовать array_chunk.

foreach(array_chunk($arr,3) as $row)
{
    echo "<td>"; 
    echo implode(" ",$row);
    echo "</td>"; 
}
person Young    schedule 24.04.2010

Функция PHP array_splice в значительной степени была создана для этой работы:

$arr = range(1,10);
while (count($arr)) {
  $three = array_splice($arr,0,3);
  echo "<td>";
  echo implode(" ",$three);
  echo "</td>";
}

Выход:

<td>1 2 3</td><td>4 5 6</td><td>7 8 9</td><td>10</td>

array_splice($arr,0,3) удаляет первые 3 элемента из $arr и возвращает их в $three

person gnarf    schedule 24.04.2010

Не знаю, есть ли функция, которая разделит массив таким образом. Возможно, сделать это в for?

$cnt = count($arr);
for($point = 0; $point < $cnt; $point += 3)
{
    echo("<td>".$arr[$point]." ".$arr[$point+1]." ".$arr[$point + 2]."</td>");
}

РЕДАКТИРОВАТЬ: Конечно, внутри вы должны проверить, остались ли значения. Это предполагает, что длина массива кратна 3 (что, как вы сказали, может быть не так)

person nc3b    schedule 24.04.2010

Смотрите этот другой пример

<?php
$arr = array("first" => "1","second" => "2","Third" => "3","Fourth" => "4","fifth" => "5","sixth" => "6","seventh" => "7","eighth" => "8","ninth" => "9","tenth" => "10");
echo "<br>";
print_r($arr);
echo "<br>";

?>

<table cellpadding="0" cellspacing="0" border="1">
<tr>
<td>
<?php
$i=1;
foreach ($arr as $value) {
    echo $value." ";
    if($i%3==0) echo "</td><td>";
    $i++;
}
?>
</td>
</tr>
</table>
person Karthik    schedule 24.04.2010