質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

764閲覧

指定件数を超えると、一度特定の処理を行う処理をスマートに記述したい

plato

総合スコア44

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/09/10 05:29

編集2018/09/10 05:30

前提・実現したいこと

指定の件数(ここでは100件)を超えると、例外的な処理を一度行い、 $output を出力するプログラムを実現したいです。

以下でも動作するのですが、 $flag を用いている点でわかりづらく、煩雑なプログラムになっている気がしています。

そこで、下記プログラムに次の改善を行うとすると、(あるいはほかの改良を加えるとすると)どのようになりますでしょうか。ご助言ください。
・ネストを浅くする
・変数を減らしたい

該当のソースコード

PHP

1$user = array(500) { 2 [0]=> 'user001', 3 [1]=> 'user002', 4(...) 5 [499]=> 'user499' 6} 7$output = ""; 8 9for ($i = 0; $i < count($user); $i++) { 10 if ($flag > 100) { 11 //100件を超えたとき,一度特殊な処理をしたい。ここでは改行 12 $output .="\n"; 13 $flag = 0; 14 } 15 16 if ($flag > 0) { 17 $output .= ","; 18 } 19 20 $flag = $flag + 1; 21 // 共通処理 22 $output .=$user[$i]; 23 } 24} 25return $output;

補足

$user の配列の数は入力によって変化します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

[0]=> 'user001',

なら [499]=> 'user500'ですね
適当な単位でarray_sliceするほうが扱いやすいかも

例)50個のデータを3つずつグループ化する

PHP

1$a=array_map(function($x){return "user".$x;},range(1,50)); 2$b=[]; 3$offset=0; 4$len=3; 5while(count($temp=array_slice($a,$offset,$len))>0){; 6 $b[]=$temp; 7 $offset+=$len; 8} 9print_r($b);

投稿2018/09/10 05:50

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

指定の件数(ここでは100件)を超えると、例外的な処理を一度行い

条件文に除算の余り使うといいですよ。

投稿2018/09/10 05:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ループの中でカウンターを使いたくないのであれば

php

1<?php 2Class Output { 3 private $count = 0; 4 private $output; 5 6 public function add($a, $b){ 7 if ($this->count > 2) { 8 //3件に1度特殊な処理をしたい。ここでは改行 9 $this->output .="\n"; 10 $this->count = 0; 11 } 12 13 if ($this->count > 0) { 14 $this->output .= ","; 15 } 16 17 // 共通処理 18 $this->output .= $a . "-" . $b; 19 20 $this->count++; 21 } 22 23 public function get(){ 24 return $this->output; 25 } 26} 27///////////////////////////////////////////////////////// 28$user = array('user001', 'user002', 'user003'); 29$user_status = array('status001', 'status002', 'status003'); 30 31$output = new Output(); 32 33for ($i = 0; $i < count($user); $i++) { 34 for($j = 0; $j < count($user_status); $j++){ 35 $output->add( $user[$i] , $user_status[$j] ); 36 } 37} 38 39echo $output->get() . "\n"; 40

投稿2018/09/10 10:24

taka-saan

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問