foreachで配列を、左から順番に、縦3列で表示したいのですが、どうすれば良いでしょうか?
※CSSでulタグを縦表示指定してます
■表示したいタグ
<ul>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
</ul>
■やりたいこと(10件だった場合)
・3で割ってちょうどいい感じにして、さらに一番左から縦に順番に表示させていきたい
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
<ul>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
■現状(一番左に表示されるだけ)
<ul>
<?php foreach ($arrdata as $data): ?>
<li><?php echo $data['a']; ?></li>
<?php endforeach; ?>
</ul>
<ul>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
</ul>
・どうしたら良いでしょうか?
No.3ベストアンサー
- 回答日時:
関数をどっかにしまって、きれいに書きたいなら
こんな感じはどうですか?
最初の $arrdata = array( というところは、サンプル用なので、
消して下さいね~
make_colsの第2引数は列の数です。
<?php
$arrdata = array("sample1", "sample2", "sample3", "sample4", "sample5", "sample6", "sample7", "sample8", "sample9", "sample10", "sample11", "sample12", "sample13" );
function make_cols($args, $col_num){
$result = array();
$cnt = 0;
$len = count($args);
$one_col = floor( count($args)/$col_num );
$over_num = $len%$one_col;
while($col_num){
$slice_len = ($over_num > 0) ? ($one_col+1) : $one_col;
$result[] = array_slice($args, $cnt, $slice_len);
$cnt += $slice_len;
--$over_num;
--$col_num;
}
return $result;
}
?>
<?php $arrdata = make_cols($arrdata, 3); ?>
<?php foreach($arrdata as $data): ?>
<ul>
<?php foreach($data as $value): ?>
<li><?php echo $value; ?></li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
No.2
- 回答日時:
要は配列を適切に区切れるかという問題なので、配列のサイズをN、分割数をc、Nをcで割った時の商をq、剰余をm(すなわちN=q*c+m)としたとき、ある列i(0<=iかつi<c)におけるアクセスすべき配列の添え字(b..e)は、
b = i * q + (i < m ? i : m );
e = b + q - 1 + (i < m ? 1 : 0);
――でいけるかと。
参考URLは実験コード。書きやすいのでruby。
参考URL:http://ideone.com/h83JfZ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS リストの並べ替え 1 2022/09/13 15:27
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS display flex の使い方 1 2022/04/25 19:13
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- HTML・CSS インラインブロックの中のテキストを上下中央に合わせたい 1 2022/12/24 17:46
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
smartyのforeachの使い方
-
3つの連想配列を交互に代入し...
-
添え字が全て文字列のPHPの多次...
-
foreachのなかで次のキーを参照...
-
スカラーのベクトル微分
-
forとかで連番の変数を一気に格...
-
PHP 多次元配列変数のデータ受...
-
CSVデータのn番目だけの値を取...
-
$_SESSIONに二次元配列を使える...
-
While文を使って配列の中身を全...
-
多次元配列をソートする綺麗な...
-
CSVデータの行数カウントをした...
-
プルダウンメニューにDBの内容...
-
unset使用時の利点
-
配列の書き方
-
多次元配列の一次元目の最大値...
-
String だと「 ByRef引数の型が...
-
ログファイルが一定行数を超え...
-
multiple属性のPOSTを配列で受...
-
ヒアドキュメントの中のfor文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
VB.NET で 二次元のハッシュは...
-
PHP、{}記号の意味
-
マッチング処理(1:N)
-
sqlのデーターを『あ行』『か行...
-
3つの連想配列を交互に代入し...
-
smartyのforeachの使い方
-
Smartyでインクリメント
-
Excel VBAでフィルター後の対象...
-
連想配列でキーを利用して一部...
-
ラジオボタンをランダムに表示...
-
ftokが動かない?
-
配列からプルダウン用のHTMLを生成
-
リストボックス複数選択抽出方法
-
関数の引数に配列を初期化なしで。
-
foreachの間にテーブルの<TR>を...
-
smartyでtplファイルでの2次元配列
-
PHPで変数名にハイフンを使うに...
-
PHPでJSONを扱うときに配列の参...
-
PHPで連想配列のプルダウンメニ...
おすすめ情報