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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

4回答

697閲覧

phpで年間の差分の年を取得したい

bainary

総合スコア58

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2020/06/30 08:42

編集2020/06/30 09:01

ロジックの部分になるのですが、phpでformで入力されたdate【2017/01/01】~【2021/01/01】のような場合に2017,2018,2019,2020,2021の数値だけ取得したいのですが可能なのでしょうか?

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

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

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

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

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

yambejp

2020/06/30 08:58

2021まで選ぶのに得たいのは2020までなのですか?
bainary

2020/06/30 09:02

こちらは記述ミスになります。 2021年までの年数を取得したいのです
hentaiman

2020/06/30 09:14

ロジックが分からないだけで年数の部分の取得やPhp標準の関数は使えると思って良いのだろうか?laravelの質問たくさんししているようだから使えるんだとは思うけど
guest

回答4

0

可能なのでしょうか?

可能です。

投稿2020/06/30 08:50

real_turtle

総合スコア16

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

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

bainary

2020/06/30 08:54

PHP関数にそのようなものが存在しているということになりますか?
real_turtle

2020/06/30 09:04

存在してないです。 自前でコーディングする必要があります。
bainary

2020/06/30 09:09

なるほど、realさんの考えているコードを少しお聞きしたいのですが大丈夫ですか?
real_turtle

2020/06/30 09:19

> コードをください・デバッグしてください等の丸投げの質問 は推奨されてないそうなので。 teratail初心者なのでどこまで書いていいかわかりませんが処理の流れだけ。 (※ 有識者さん教えて下さい。) 1. 【2017/01/01】と【2021/01/01】のデータが存在しています。 2. それぞれ年の値を抜き出します。 3. 小さい数値からスタート。 4. 配列に格納しつつ、インクリメントしていく。 5. 大きい方の数値になったら処理終了。 方法はいくつかあるのでどうすれば実現可能か検討して、 その通りにコーディングしてみて、 エラーや想定してなかった表示内容などが発生したら、 そのコードやエラー内容や出力結果を貼り付けてまた質問してください。
guest

0

自己解決

php

1$get_date = new DateTime('2020-01-01'); 2$end_date = new DateTime('2025-01-01'); 3$date = date('2020-01-01'); 4$year = intval($data['date']); 5$get_year_number = $get_date->diff($end_date); 6$encode_year = $get_year_number->y; 7$forYear = self::getYear($encode_year, $year); 8========================================================================================== 9public function getYear($encode_year, $year) 10 { 11 $array = array(); 12 for ($i = 0; $i <= $encode_year; $i++) { 13 array_push($array, $year); 14 $year++; 15 } 16 return $array; 17 }

上記で取得したい結果を表示出来ました。
回答して頂いた皆様ありがとうございました。

投稿2020/06/30 10:45

編集2020/06/30 10:47
bainary

総合スコア58

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

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

bainary

2020/06/30 15:37

なにが低評価なのか知りたい 自分で答えの記述を書いたのに対して低評価の答えを教えて下さい
guest

0

ざっくりこんな感じ
どこまでチェックするか次第ですね
type="date"の使い方にもよります

PHP

1<?PHP 2$pattern="/^\d{4}-\d{2}-\d{2}$/"; 3$from=filter_input(INPUT_POST,"from",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>$pattern]]); 4$to=filter_input(INPUT_POST,"to",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>$pattern]]); 5$years=[]; 6if($from and $to and $from<=$to){ 7 $from_year=substr($from,0,4); 8 $to_year=substr($to,0,4); 9 $years=range($from_year,$to_year); 10} 11print_r($years); 12?> 13<form method="post"> 14FROM:<input type="date" name="from" value="2017-01-01"><br> 15TO:<input type="date" name="to" value="2021-01-01"><br> 16<input type="submit" value="send"> 17</form>

投稿2020/06/30 10:12

yambejp

総合スコア114843

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

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

0

function getYears(string $begin, string $end) { return range( substr($begin, 0, 4), substr($end, 0, 4) ); } var_dump(getYears('2017/01/01', '2021/01/01'));

正常系のみでしたらこれで。
お節介かもしれませんが
次回からは不完全でもいいのでbainaryさんが考えているコードを例示した上でどのようなケースがうまくできない、のように質問されたほうが良いかと思います。

投稿2020/06/30 09:21

mikkame

総合スコア5036

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

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

real_turtle

2020/06/30 09:24

あっ、、、range()、、、
mikkame

2020/06/30 09:25

ん・・・?rangeってダメでしたっけ・・・
real_turtle

2020/06/30 09:52

すみません書き方が悪かったです。 確かにrangeが使えるなぁ。という気づきです。 勉強になります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問