2016-12-27 6 views
1

私のウェブサイトには少し問題があります。私はブログを持っていて、すべての記事が1つのリストにあります。今私はこの1つのリストを3つのリストに分割したいと思います。PHP:foreach-loopを3つに分割するにはどうしたらいいですか?

私の問題:

<ul class="row-3"> 
<?php $i = 1; foreach($posts as $post): ?> 
    <?php if($i % 3 == 0): ?> 
     <?php echo "$article" ?>    
    <?php endif; $i++; ?> 
<?php endforeach ?> 
</ul> 

<ul class="row-2"> 
<?php $i = 1; foreach($posts as $post): ?> 
    <?php if($i % 2 == 0): ?> 
     <?php echo "$article" ?>    
    <?php endif; $i++; ?> 
<?php endforeach ?> 
</ul> 

私はこのようにそれを作る場合は、すべての第3のループは、3番目のリスト及び第二のリストにすべての第二のループに入ります。しかし、問題は次のとおりです。

第5条及び10は、両方のリストになります...

だから私はその3であれば、その後3まで、そのカウンタのカウント3つの部分に全体のforeachループを分割し、しなければなりませんそれは再び0に変わりますので、毎回2を2番目に、3番目をすべて3番目のリスト に最初のリストに入れることができますが、私はこれをどのように解決できるかは全く考えていません。

..

おかげで多くのことを私はあなたたちが私に少し役立つことを願って、私は私の悪い英語のためにごめんなさい。

答えて

2

私はあなたの注文にはうまくいかないとは思いますが、array_chunk、https://secure.php.net/manual/en/function.array-chunk.phpは、あなたが望むことをするかもしれません。

この方法では、共通の倍数を共有する必要はありません。

注文が問題であれば、array_chunk_verticalを行うコードを持つarray_chunkページにコメントがあります。これら2つの方法のうちの1つが、必要なものを手に入れなければなりません。以下、この未テストコードのよう

何か:

//各グループは、それ自身のセクションの配列になります。 $セクション= array_chunk($ posts、2);

+0

使用方法を教えてください.... –

+0

ありがとうございました!私は今、これらの方法の1つで私の問題を解決できると思います。 – UnknownProgrammer

0

だから、私の小さな問題にsoulutionはとても簡単^^ました:だから私は、スタックオーバーフローウィッヒでこの関数は3で配列を分割した

<?php 
function partition($list, $p) { 
    $listlen = count($list); 
    $partlen = floor($listlen/$p); 
    $partrem = $listlen % $p; 
    $partition = array(); 
    $mark = 0; 
    for ($px = 0; $px < $p; $px++) { 
     $incr = ($px < $partrem) ? $partlen + 1 : $partlen; 
     $partition[$px] = array_slice($list, $mark, $incr); 
     $mark += $incr; 
    } 
    return $partition; 
} 

$sec1 = partition($posts, 3); 
$sec2 = partition($posts, 3); 
$sec3 = partition($posts, 3); 
?> 

パーツ(またはx:partition($ array、x);ではなくwirte)

は、その後残りは簡単だった:

<?php foreach($sec1[0] as $post): ?> 
    ... 
<?php endforeach ?> 

私は、各リストおよびすべてのリストについては、foreachのために3つのセクションをしなければなりませんでした。

関連する問題