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

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

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

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

Q&A

解決済

4回答

1261閲覧

配列の中身を取得

leoairen

総合スコア122

PHP

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

0グッド

1クリップ

投稿2016/07/01 02:31

編集2016/07/01 02:52

下記にgoogleAPIを使って祝日の配列を取得しております。

var_dump($national_holidays);は以下の通りです。

array(17) { ["2016-01-01"]=> string(6) "元日" ["2016-01-11"]=> string(12) "成人の日" ["2016-02-11"]=> string(18) "建国記念の日" ["2016-03-20"]=> string(12) "春分の日" ["2016-03-21"]=> string(25) "春分の日 振替休日" ["2016-04-29"]=> string(12) "昭和の日" ["2016-05-03"]=> string(15) "憲法記念日" ["2016-05-04"]=> string(15) "みどりの日" ["2016-05-05"]=> string(15) "こどもの日" ["2016-07-18"]=> string(9) "海の日" ["2016-08-11"]=> string(9) "山の日" ["2016-09-19"]=> string(12) "敬老の日" ["2016-09-22"]=> string(12) "秋分の日" ["2016-10-10"]=> string(12) "体育の日" ["2016-11-03"]=> string(12) "文化の日" ["2016-11-23"]=> string(18) "勤労感謝の日" ["2016-12-23"]=> string(15) "天皇誕生日" }

下記のコードですと、配列が空になってしまします。

for ($p=0; $p<count($national_holidays); $p++) { $kokumindays .= '"'.$national_holidays[$p].'"'.","; } $kokumindays = rtrim($kokumindays, ",");

var_dump($kokumindays);の結果は下記の通りです。

string(50) ""","","","","","","","","","","","","","","","","""

どのように修正すればよいかどなたか教えて頂けますでしょうか。

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

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

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

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

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

kei344

2016/07/01 02:35

コードが省略されすぎているので、せめて$pが何かわかる程度まで記述ください。
leoairen

2016/07/01 02:43

ご指摘、ありがとうございます。コピーの際にミスしてしましました。ほかにも足りない情報があれば足しますので、よろしくお願い致します。
ttyp03

2016/07/01 02:50

$national_holidaysのvar_dumpがあると良いかと。
romiogaku

2016/07/01 02:50

$national_holidaysをvar_dump()してください。
leoairen

2016/07/01 02:52

ご指摘、ありがとうございます。修正いたしました。冒頭の配列がvar_dumpの結果となります。よろしくお願い致します。
kei344

2016/07/01 09:08

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。
guest

回答4

0

ベストアンサー

$national_holidaysは連想配列なので0などの数値がキーになっていません。
こんな感じでどうでしょうか。

PHP

1foreach ($national_holidays as $key => $val) { 2 $kokumindays .= '"'.$key.'"'.","; 3}

投稿2016/07/01 02:54

ttyp03

総合スコア16998

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

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

leoairen

2016/07/01 04:37 編集

ご回答、ありがとうございます。できました。ありがとうございます。なので、「2016-01-01」などの日付がキーということでよろしいでしょうか。
ttyp03

2016/07/04 01:50

> 「2016-01-01」などの日付がキーということでよろしいでしょうか。 そういうことです。
leoairen

2016/07/04 01:55

早速のご回答、ありがとうございます。勉強になりました。ありがとうございました。
guest

0

$national_holidaysは連想配列なので、forで回しても序数で参照はできないのでは?

$kokumindays=""; foreach($national_holidays as $val) { $kokumindays .= '"'.$val.'"'.","; }

投稿2016/07/01 03:01

yambejp

総合スコア114784

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

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

leoairen

2016/07/01 04:40 編集

ご回答、ありがとうございます。できました。ありがとうございます。 つまり序数とかキーで日付になっており、数字ではないので参照できないという理解でよろしいでしょうか。
guest

0

これでいけませんか?

PHP

1echo '"'.implode( '","', array_keys( $national_holidays ) ).'"'; // (未テスト)

ちなみに連想配列は foreach で採るとよいです。

投稿2016/07/01 02:54

kei344

総合スコア69400

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

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

leoairen

2016/07/01 04:35

ご回答、ありがとうございます。できました。ありがとうございます。
guest

0

$national_holidaysは日付と祝日名のペアの連想配列でできています。しかし、あなたは通常の配列のように$pというカウンタを使ってアクセスしています。
連想配列の全要素へのアクセスはこうだと思います。

PHP

1foreach ($national_holidays as $date => $holiday_name) { 2 // $dateには日付が入り、$holiday_nameには祝日の名前が入る 3 $kokumindays .= '"'.$holiday_name.'"'.","; 4} 5$kokumindays = rtrim($kokumindays, ",");

投稿2016/07/01 02:55

編集2016/07/01 03:07
masaya_ohashi

総合スコア9206

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

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

leoairen

2016/07/01 04:46

ご回答、ありがとうございます。できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問