Как разделить этот массив на три и поместить его в <td>с помощью php? - PullRequest
2 голосов
/ 24 апреля 2010

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

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

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

Ответы [ 5 ]

7 голосов
/ 24 апреля 2010

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

foreach(array_chunk($arr,3) as $row)
{
    echo "<td>"; 
    echo implode(" ",$row);
    echo "</td>"; 
}
2 голосов
/ 24 апреля 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

1 голос
/ 28 апреля 2010

Это поможет.

    <?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>"; 
  }  

 }

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

1 голос
/ 24 апреля 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>
1 голос
/ 24 апреля 2010

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

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

EDIT: Конечно, внутри вы должны проверить, остались ли значения. Предполагается, что длина массива кратна 3 (что, как вы сказали, может быть и не так)

...