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

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

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

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

Q&A

解決済

1回答

1270閲覧

PHPで_POSTの値を連想配列に一致していたらreturnへ返したい

shibainu

総合スコア26

PHP

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

0グッド

1クリップ

投稿2016/05/12 18:07

編集2016/05/13 00:19

###前提・実現したいこと
PHPで_POSTの値を連想配列から探し一致していたらreturnへ返したい
かれこれ4日くらい悩みましたがお手上げです。
どうかお知恵をお貸しください・・。
表題の通りなのですが、PHPで_POSTの値を連想配列に一致していたら、
$valを拾ってreturnに返したいです。
さらに、if文で分岐していますが、['addr11']に値がなければ['addr1']を見て情報があれば
値を返すという感じです。

$_POST['addr1']の値は、ajaxzip3のアレです。

フォームで都道府県を選んだら料金も出てくるイメージです。
イメージ通りになかなかいかないものですね・・。

###発生している問題・エラーメッセージ
現在のコードですと、茨城県の300がフォームの結果に出ています。

###該当のソースコード

function souryou($price){ $todofuken = array( '北海道' => 1296, '青森県' => 972, '茨城県' => 300, ); foreach ($todofuken as $key => $val){ if(array_search($_POST['addr11'], $key) !== false){ $souryou = "$val"; }elseif (array_search($_POST['addr1'], $key) !== false) { $souryou = "$val"; } } return $souryou; }

###試したこと
恐縮ですが、PHPを始めたばかりです。
PHPのサイトなどを見つつ読みつつしてみましたが、造詣に乏しいです。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

$_POST['addr1']、$_POST['addr11']が出力する値です

AjaxZip3.PREFMAP = [ null, '北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県', '茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県', '新潟県', '富山県', '石川県', '福井県', '山梨県', '長野県', '岐阜県', '静岡県', '愛知県', '三重県', '滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県', '鳥取県', '島根県', '岡山県', '広島県', '山口県', '徳島県', '香川県', '愛媛県', '高知県', '福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県' ];

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

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

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

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

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

kei344

2016/05/12 18:17

「ajaxzip3のアレです」ではなくvar_dumpした値など具体的にお書きください。また、コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
shibainu

2016/05/12 18:31

遅い時間ですが、回答ありがとうございます。 コードはコードブロックを使用しました。ご指摘ありがとうございます。 var_dumpも良くわかっておりません。 ajaxzip3の郵便番号入力で住所が出てくるものなのですが、どのような情報があれば良いのでしょうか。
kei344

2016/05/12 19:09

「POSTされたデータにどういうデータがどういう形で入っているか」の情報が必要です。また、var_dumpは変数の内容を出力する関数です。「PHP var_dump」で使い方を探してみてください。
guest

回答1

0

ベストアンサー

質問内容に不明瞭なところは多々ありますが、想像で回答してみます。

PHP

1if( isset($todofuken[$_POST['addr11']]) ){ 2 $souryou = $todofuken[$_POST['addr11']]; 3} else if( isset($todofuken[$_POST['addr1']]) ){ 4 $souryou = $todofuken[$_POST['addr1']]; 5} else { 6 $souryou = 0; 7} 8return $souryou;

解説
$_POST['addr11']と$_POST['addr1']に都道府県名が入ってくると想定。
その都道府県名が連想配列$todofukenに見つかれば、'addr11'の方を優先して値を返却する。
見つからないときは0を返却。

投稿2016/05/13 00:20

編集2016/05/13 00:23
ttyp03

総合スコア16998

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

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

shibainu

2016/05/13 00:32

情報不足の中回答いただきありがとうございます。 頂いた内容で解決いたしました。本当にありがとうございます。 foreachが必要なのだとばかり思っていました。 頂いたコード、じっくり分析したいと思います。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問