データを整形してforeachで回す
foreachで回すときにphpでどう整形するか。
sqlでクエリ実行時にforeachしやすいように検索するか、検索後にphpでデータを整形するか迷う場合がある。どちらで書くのがシンプルか、処理速度が速いか、可読性が高いか。
ハマる状況は色々とあるので、その都度備忘録として、書いていく。
foreach
foreachの基本は公式に譲る。
その他、PHP foreach文まとめ
case 1 <td>に%と件数を両方表示
さて、まずは、こういうやつ。
表<td>にデータを二つ入れてforeachで回したいときにどうしたらいいか。
foreachの中にforeachを入れると、要素の数だけ繰り返されてしまう。
とりあえず、まずはクエリで検索後、codeigniterでresult_array()した後に、データを整形してやった。 関数の中に処理を入れてやっているので、それをreturnする前に望んだように整形してやる。
望んだようにというのは、配列のキーと値をforeachで回しやすいように整形する。
では、どのように整形したらいいのか。コード自体をシンプルにして、且つデータが変更された場合に運用を楽にしたいので、<td>ごとにコードを書きたくない。だから、ループ処理で上手く表示できるようにしたい。同じ配列内でデータを整形させて、それを回そうとすると、上手くいかない。
既存のコードに処理を追加させていこうとすると、何を処理しているのか分からなくなってくるので、関数を分けるなり、処理を分けた上で、それを呼び出すことにした。最終的に別々で呼び出した関数のデータを連結させて、一つのデータに整形。それをforeachで回してやることによって、意図したように表示させることはできた。
しかし、結論に至るまでに、随分と冗長なコードを書いていたし、他にももっとシンプルな書き方があると思う。これはフレームワークによっても変わると思う。効率的な書き方があれば、ぜひ指南していただきたい。
CF ,私がMVCフレームワークをもはや使わない理由(最終閲覧2020/05/05)
ハマったら追加する
備忘録として、ハマったら追加する
ディスカッション
コメント一覧
まだ、コメントがありません