1

ここにこのPHPスクリプトがあります

$z = range(2, 123);
echo '<table width="100%">';
foreach($z as $x){

echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}

echo '</table>';

私がやろうとしているのは、テーブルの行に6つのアイテムを取得してから新しい行を取得することです...どうすればよいですか?

ありがとう、J

4

6 に答える 6

2

コードをすっきりときれいにしたい場合は、常にデータ操作をプレゼンテーションコードから分離してください。したがって、可能な限り多くのロジックを出力から遠ざけてください。
したがって、最初にデータを準備します

<?
$data = range(2, 123);
$data = array_chunk($data, 6);
?>

そしてそれを出力します

<table width="100%">
<? foreach($data as $chunk): ?>
  <tr>
<? foreach($chunk as $val): ?>
    <td>
      <a href="/<?=$val?>/"><img src="/<?=$val?>/5.jpg" width=200></a>
    </td>
<? endforeach ?>
  </tr>
<? endforeach ?>
</table>
于 2013-02-12T16:07:51.223 に答える
2

ここでモジュロ演算子の出番です。割って余りを計算できます。残りが0新しい行を追加するたびに:

$z = range(2, 123);
echo '<table width="100%">';
echo '<tr>';
$cnt = 2;
foreach($z as $x){
if ( ($cnt - 2) % 6 == 0 ) {
echo '</tr><tr>';
}
$cnt++;
echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}
echo '</tr>';
echo '</table>';
于 2013-02-12T15:31:54.920 に答える
1

次のようなものを試してください。

$z = range(2, 123);
echo '<table width="100%"><tr>';
foreach($z as $x){

    if( ($x - 2) % 6 == 0 ) // Minus 2 because you don't start at 0 but at 2.
    {
        echo '</tr><tr>';
    }
    echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}

echo '</tr></table>';

これ%は、モジュロと呼ばれる数学関数です。詳細については、こちらをご覧ください

于 2013-02-12T15:32:56.020 に答える
0

サイクル内のカウントに任意の変数を使用するだけです。それを増やして、値を確認してください。例えば

$cnt++;
if ($cnt >= 6) {
  $cnt = 0;
  echo "</tr><tr>";
}

また、foreach を使用しないでください。2~123に使用

于 2013-02-12T15:41:24.877 に答える
0

カウンター変数を使用します。

$z = range(2, 123);

$current_result=0;

echo '<table width="100%">';
echo '<tr>';
foreach($z as $x){
if ($current_result++ % 6 == 0) echo '</tr><tr>';

echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}
echo '</tr>';
echo '</table>';`
于 2013-02-12T15:34:04.213 に答える
0

まず、range(2, 123)は 122 個の数を生成するので、必要なのは ですrange(1, 6)

次に、各テーブル セルを行要素で囲むようにスクリプトを修正する必要があるため、スクリプトは次のようになります。

$z = range(1, 6);
echo '<table width="100%">';

foreach($z as $x){
  echo '<tr><td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td></tr>';
}

echo '</table>';

ただし、Range は 6 回ループするちょっと変わった方法です。文字列を使用してテーブルを構築し、 を使用してループしてwhileから、テーブル全体を 1 回で出力したい場合があります。

編集
ポイントを逃したようです-範囲内で6回ループしようとしている場合は、モジュロアプローチが必要ですが、テーブル行要素についての私のポイントはまだ必要です。そうしないと、有効なHTMLが生成されません.

于 2013-02-12T15:37:23.443 に答える