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

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

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

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

Q&A

解決済

4回答

1676閲覧

php 配列 選択値に合わせて出力

hiro0208

総合スコア75

PHP

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

0グッド

0クリップ

投稿2017/04/06 03:01

基本的な配列の処理ですが、
1-12の値が連想配列になっているものを、通常の配列として考え直し、同じ出力を行いたいです。ご教授お願いいたします。

php

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>sample</title> 6</head> 7<?php 8for ($i = 1; $i <= 12; $i++) { 9 $option_month .= '<option value="' . $i . '">' . $i . '月</option>' . "\n"; 10} 11?> 12<form action="" method="post"> 13<select name="month"> 14<?php echo $option_month?> 15</select> 16<input type="submit" name="btn" value="送信"> 17</form> 18<body> 19<?php 20//季節の配列をつくる 21$array_month['1'] = '冬'; 22$array_month['2'] = '冬'; 23$array_month['3'] = '春'; 24$array_month['4'] = '春'; 25$array_month['5'] = '春'; 26$array_month['6'] = '夏'; 27$array_month['7'] = '夏'; 28$array_month['8'] = '夏'; 29$array_month['9'] = '秋'; 30$array_month['10'] = '秋'; 31$array_month['11'] = '秋'; 32$array_month['12'] = '冬'; 33if (isset($_POST['btn'])) { 34 $month = $_POST['month']; 35 echo $month . '月は' . $array_month[$month] . 'です。' . "\n"; 36} 37?> 38</body> 39</html>

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

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

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

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

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

guest

回答4

0

通常の配列という意図がわからないのでなんとも言えませんが

PHP

1$array_month=[ 2 ['month'=> 1,'val'=>'冬'], 3 ['month'=> 2,'val'=>'春'], 4 ['month'=> 3,'val'=>'春'], 5 ['month'=> 4,'val'=>'春'], 6 ['month'=> 5,'val'=>'夏'], 7 ['month'=> 6,'val'=>'夏'], 8 ['month'=> 7,'val'=>'夏'], 9 ['month'=> 8,'val'=>'秋'], 10 ['month'=> 9,'val'=>'秋'], 11 ['month'=>10,'val'=>'秋'], 12 ['month'=>11,'val'=>'冬'], 13 ['month'=>12,'val'=>'冬'], 14]; 15if (isset($_POST['btn'])) { 16 $month = $_POST['month']; 17 $season=array_shift((array_filter($array_month,function($a) use($month){if($a["month"]==$month) return 1;})))["val"]; 18 echo $month . '月は' . $season . 'です。' . "\n"; 19}

投稿2017/04/06 03:46

yambejp

総合スコア114572

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

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

hiro0208

2017/04/06 04:03

意図がわかりづらい質問になり、すみません。 キーをシングルコーテーションで囲っていたため文字列という考えで、連想配列だったという 。。。な結果になりました。 ありがとうございます。
yambejp

2017/04/06 04:12

今回のケースは他の方の回答で必要十分だとおもいますが 配列からデータ検索をする方法としては今回の回答が参考になるかと思います
guest

0

こんな感じですかね?たぶんw
array();は左からarray(0,1,2・・・)って連番されてるんで$i=0から始めればいけるかなーと。

php

1for ($i = 0; $i < 12; $i++) { 2 $option_month .= '<option value="' . ($i + 1) . '">' . ($i + 1) . '月</option>' . "\n"; 3 4 5//季節の配列をつくる 6$array_month = array('冬', '冬', '春', '春', '春', '夏', '夏','夏', '秋', '秋', '秋', '冬'); 7 8}

投稿2017/04/06 03:23

ImSleep

総合スコア39

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

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

hiro0208

2017/04/06 04:04

array()構文ですね。ありがとうございます。
guest

0

こういうことですかね?

PHP

1<?php 2// 要素数12の配列で、0から11に各季節が入っている 3$array_month = ['冬', '冬', '春', '春', '春', '夏', '夏', '夏', '秋', '秋', '秋', '冬']; 4if (isset($_POST['btn'])) { 5 $month = $_POST['month']; 6 // $monthが「1〜12」の数値が入っているので、配列の添字である「0〜11」に合わせるため1引く。 7 echo $month . '月は' . $array_month[$month-1] . 'です。' . "\n"; 8}

投稿2017/04/06 03:20

masaya_ohashi

総合スコア9206

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

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

0

自己解決

キーのシングルコーテーションを外す。

連想配列

投稿2017/04/06 04:05

編集2017/05/12 03:02
hiro0208

総合スコア75

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

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

masaya_ohashi

2017/04/06 04:15

それだとキーが数値になるだけで連想配列なままな気がしますが…まあ、そもそもPHPに配列と連想配列の区別はないんですがね(PHPの配列はキーが整数の0から連番で付いている連想配列である)
hiro0208

2017/04/06 04:21

そうですね。。。ちょっと解答見直します
masaya_ohashi

2017/04/06 04:36

一般的に「配列」とは「0から始まる連番の添字を持つもの」で、「連想配列」とは「任意の添字を持つもの」です。添字が整数か文字列かは連想配列との区別ではありません。例えば「1」「5」「10」という添字の3要素を持つ配列は、添字は整数ですが連想配列です。 また、PHPの連想配列は一般的な他の言語の連想配列と違い、添字の順番が保証されている特殊なものです。他の言語では、添字を取り出す順番は不定なものが多いです。そこら辺を調べてみると面白いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問