0

質問が明確でない場合は申し訳ありませんが、説明させてください:

次のことを達成する必要があります。

<div>
     <div>art 1</div>
     <div>art 2</div>
</div>
<div>
     <div>art 3</div>
     <div>art 4</div>
</div>
<div>
     <div>art 5</div>
     <div>art 6</div>
</div>
etc

各アートは配列内にあります。これまでのところ、次のコードを試しました。

foreach $articles as $article{

for($i=1; $i<3; $i++){

    if($i==1){
    echo '<div>';
    }

    echo '<div>'.$article->title.'</div>';


    if($i==2){
    echo '</div>';
    }   
}

}

しかし、私が得たものは私が望む結果ではありません:

<div>
     <div>art 1</div>
     <div>art 1</div>
</div>
<div>
     <div>art 2</div>
     <div>art 2</div>
</div>
<div>
     <div>art 3</div>
     <div>art 3</div>
</div>
etc

2 div ごとに配列の値を変更する方法がわかりません。主に検索方法がわからないため、同様の質問が見つかりませんでした。重複している場合は、親切に1つを教えてください。

お時間をいただきありがとうございます。

4

3 に答える 3

2

必要なのはモジュロです。モジュロは数値で除算し、剰余を返します。カウントのどこにいるかを判断するのに最適です。モジュロの文字は % です

$counter = 1;
foreach($articles as $article) {
    if($counter % 2 == 1) echo '<div>';
    echo '<div>'.$article->title.'</div>';
    if($counter % 2 == 0) echo '</div>';
    $counter++;
}
if($counter % 2 == 0) echo '</div>';

数学の仕組みは次のとおりです。最初のループ、カウンターは 1 です。剰余は剰余のみに関係するため、整数のみを除算します。したがって、1/2 は余りが 1 の 0 を返します。2 番目のループ カウンタは 2 です。したがって、2/2 は余りが 0 の 1 を返します。

これは、モジュロ 3 を使用した同じループです。
1 % 3 = 1/3 = 0 剰余 1
2 % 3 = 2/3 = 0 剰余 2
3 % 3 = 3/3 = 1 剰余 0

それが役立つことを願っています

于 2013-10-04T16:30:10.863 に答える
1

私はcodeigniterを知りませんが、phpではこれはうまくいくはずです

$i = 0; 
echo "<div>"; 
foreach ( $articles as $article ){  
  echo "<div>" . $article->title . "</div>"; 
  if (++$i % 2 === 0 && $i !== count($articles)) echo "</div><div>";       
} 
echo "</div>";
于 2013-10-04T16:29:15.923 に答える
0

試す:

foreach( $articles as $key => $article ){
$key++;
if( $key % 2 == 0  ){
    echo '<div>'.$article->title.'</div>';
    echo '</div><div>';
}else{
    echo '<div>'.$each['title'].'</div>';
}
}
于 2013-10-04T16:31:44.567 に答える