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

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

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

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

Q&A

解決済

1回答

668閲覧

配列を一つにまとめたい

kazu130

総合スコア17

PHP

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

0グッド

0クリップ

投稿2019/04/08 08:09

編集2019/04/08 08:44

phpバージョン
PHP 7.3.1
初級の質問で申し訳ございません。
カレンダーの作成をしております。
表示する月

$nextmanth = date("n",strtotime("+1 month"));

の祝日色を変える作業に行き詰まっています・

$conf_horiday = true; if ($conf_horiday) { $horidays = array(); $horiname = array(); // 内閣府ホームページの"国民の祝日について"よりデータを取得する //2020年までしか反映されない。 $res = file_get_contents('https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv'); $res = mb_convert_encoding($res, "UTF-8", "SJIS"); $pieces = explode("\r\n", $res); $dummy = array_shift($pieces); $dummy = array_pop($pieces); foreach ($pieces as $key => $value) { $temp = explode(',', $value); $horidays[] = $temp[0]; //日付を設定 $horiname[] = $temp[1]; //祝日名を設定
foreach($horidays as $v){ list($y,$m,$d) = explode("/", $v); if($y == $now_year && $m == $next_month){ $hori[]= sprintf("%d", $d); $h[0] =end($hori); print_r($h); } }
print_r($h);

の結果が

Array ( [0] => 1 ) Array ( [0] => 2 ) Array ( [0] => 3 ) Array ( [0] => 4 ) Array ( [0] => 5 ) Array ( [0] => 6 )

になるのですがこれを

Array

1

にする方法はありますか??

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

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

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

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

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

yoorwm

2019/04/08 08:11

print_r($h)の結果がそんな風に出力される実装というのを見た事が無いのですが、バージョン情報や実行したプラットフォームを教えてください。
s8_chu

2019/04/08 08:18

質問文の`print_r`の実行結果は実際に出力されたものですか? もしそうでなければ、実際に出力されたものを追記していただけませんか?
kazu130

2019/04/08 08:20

実際に出力されたものです
m.ts10806

2019/04/08 08:21

質問には「初心者アイコン」がつけられるので、「初心者です」「初級で・・・」と書くより初心者アイコンをつけてください。 ※誰も基本的な内容だからと責めることはないので謝る必要はないですよ。 ただ・・前の質問で指摘したインデントについてはきちんとしていただきたく。 Web上の整形サービスを利用するか、コードフォーマット機能のついたエディタを利用してください(後々の効率を考えたらエディタ導入が先です)
s8_chu

2019/04/08 08:23

`$horidays`の内容はどのようになっているのか、教えていただけませんか?
m.ts10806

2019/04/08 08:27

あと今回の質問内容だけでしたら何を目的としたコードなのかもさっぱりです。 前提や背景、仕様を具体的に記載してください。すべての人があなたのすべての過去質問に目を通すわけではありません。 過去質問と関係があるのでしたら過去質問へのリンクを質問に記載してください。
kazu130

2019/04/08 08:32

すみませんでした。 端的にこれがしたいと記入した方がわかりやすいと思っていました。 インシデントと具体内容をしっかり書くように心がけます。
yoorwm

2019/04/08 08:39

文章の先頭の「php 7.2」という箇所の意味が分かりませんし、編集して記載していただいたコードも、PHPの構文的にエラーが出るものなのですが、もう少し真面目に質問しませんか?
kazu130

2019/04/08 08:45

ふざけている訳ではないのですがご指摘ありがとうございます。もう少し勉強してから質問するようにします。
guest

回答1

0

ベストアンサー

$h[0]と固定ではなく$h[]と順々に受け取れば良いだけかと思います。
print_r()は画面出力のためではなくデバッグのために使われるものなので、
今回の内容で毎ループ実行する必要はないかと思います。ループ後に実行してください。

php

1foreach($horidays as $v){ 2 list($y,$m,$d) = explode("/", $v); 3 if($y == $now_year && $m == $next_month){ 4 $hori[]= sprintf("%d", $d); 5 $h[] =end($hori); 6 } 7} 8print_r($h);

$vが日付と分かっているのであればexplode()よりもdate()関数などで対応したほうが良いように思います。
$horiという変数はあまり意味がないですね。

php

1$now_year = date('Y'); 2$next_month = date('m',strtotime('+1 month')); 3$year_nextmonth = date('Ym',strtotime('+1 month')); 4$horidays = ['2019/05/01','2019/05/02','2019/05/03']; 5 6foreach($horidays as $v){ 7 if($year_nextmonth === date('Ym',strtotime($v)) ){ 8 $h[] =date('j',strtotime($v)); 9 } 10} 11print_r($h); 12/* 13Array 14( 15 [0] => 1 16 [1] => 2 17 [2] => 3 18) 19*/ 20

投稿2019/04/08 08:44

m.ts10806

総合スコア80765

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

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

kazu130

2019/04/08 08:56

ありがとうございます。できました。
m.ts10806

2019/04/08 08:59

コードよりなるべくエディタ含めた開発環境整備を優先してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問