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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

1回答

1007閲覧

難関ロジック? Nから始まりNNづつ足した数と比較したい

earnest_gay

総合スコア615

PHP

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2017/10/25 15:55

編集2017/10/25 16:02

ある条件ロジックで悩んでいます。
日本語で書いている部分がそうなのですが、割り算しても難しそうです。。。

日本語の部分が何らかの計算式によって、それぞれの条件を満たす一定の値が導き出せればいいのですがロジックが難しくアドバイスいただきたいです。

悩んでいる大きな部分は下記です。下準備として枠は作りましたがロジックが、、、。

foreach(何回回るか分からない繰り返し処理 as $number => $dateil){ hoge(); } public function hoge($number, $dateil){ $column = 4; if (!$number) { } elseif ($number == 1 || $number == 5から始まり4づつ足した数) { } elseif ($number == 3から始まり4づつ足した数) { } elseif ($number == 4から始まり4づつ足した数) { } elseif ($number == 2から始まり4づつ足した数) { } }

参考になるか分かりませんが、
$numberには[0,1,2,3,4,5,,,,,,,,]のように規則的に数値が入っています。

・イメージ

[0]=> [aaa] => "", [bbb] => "", [ccc] => "", [ddd] => "", [eee] => "", [1]=> [aaa] => "", [bbb] => "", [ccc] => "", [ddd] => "", [eee] => "", [2]=> [aaa] => "", [bbb] => "", [ccc] => "", [ddd] => "", [eee] => "",

と続きます。
一次配列のkey($number)は規則的ではありますが、$numberにどれだけ配列が入ってるかは未知です。

for文で適当に99回ぐらい繰り返して基準とする数値に4を足した配列を作り、
in_array($number, 5を基準に作った配列)
in_array($number, 3を基準に作った配列)
in_array($number, 4を基準に作った配列)
in_array($number, 2を基準に作った配列)
とするぐらいしか思うつかないのですが、もっとスマートな方法にしたいのです。
自分の頭じゃ無理ぽ。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/10/25 16:01

何をしたいのかを具体的な例を出したりしてわかるように説明してください。
guest

回答1

0

ベストアンサー

4で割った余りを取ればいい。
「4ずつ足した数」なら、すべて4で割った余りは等しくなる。

php

1 if (!$number) { 2 3 } elseif ($number % 4 == 1) { 4 5 } elseif ($number % 4 == 3) { 6 7 } elseif ($number % 4 == 0) { 8 9 } elseif ($number % 4 == 2) { 10 11 }

投稿2017/10/25 16:00

編集2017/10/25 16:04
swordone

総合スコア20649

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

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

earnest_gay

2017/10/25 16:50

解決しました。ありがとうございます。 $numberと$number % 4を比較しようとしていたからロジックが組めませんでした。汗 !$numberと$number == 1に0と1がかぶるのであまりを求めた結果に+2して被らないようにしましたとか書いているうちに、0と1のでどころが違うから+2などせずとも大丈夫だと気づきました。汗 可読性のためにあえて+2しておこうと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問