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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

1063閲覧

チェックボックスの選択値の保持の処理について

hiro0208

総合スコア75

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/02/28 13:47

編集2019/02/28 13:53
<?php echo 'チェックボックスの選択値の保持' . '<br>' . '<br>'; //車の配列を作成する $array_car[1] = 'セダン'; $array_car[2] = 'SUV'; $array_car[3] = '軽自動車'; if (isset($_POST['btn'])) { $car = $_POST['car']; } ?> <form action="" method="post"> 次の中から好きなタイプをすべて選んでください。<br> <?php foreach ($array_car as $key => $data) { $checked = @in_array($key, $car) ? ' checked' : ''; echo '<input type="checkbox" name="car[]" value="' . $key . '"' . $checked . '>' . $data . "\n"; } ?> <input type="submit" name="btn" value="送信"> </form> <?php if (isset($_POST['btn'])) { foreach ((array)$car as $key => $data) { echo $key ? '、' : ''; echo $array_car[$data]; } echo 'ですね'. '<br>' . "\n"; } ?>

////////////////////////////////////////////////////////////////////////////////////
上記の、

if (isset($_POST['btn'])) {
foreach ((array)$car as $key => $data) {

echo $key ? '、' : ''; echo $array_car[$data]; } echo 'ですね'. '<br>' . "\n";

}

の処理について質問です

////////////////////////////////////////////////////////////////////////////////////
$array_car[$data]
で配列$array_carのキーとして$dataを設定していますが、
なぜ$dataに、それぞれ「1」「2」「3」が入るのか?
この$dataは値は、設定させていないのに、値が入る理由がわかりません。

今回、$carは型キャスト(array)を利用し、配列とみなし

$keyは

echo '<input type="checkbox" name="car[]" value="' . $key . '"' . $checked . '>' . $data

$car = $_POST['car'];

として使用して、選択したキーが入るのはわかりますが、

この $dataが、どのようにうまれたか、わかりません。

ご教授いただければと思います。よろしくおねがいします。

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

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

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

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

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

guest

回答3

0

マニュアルを読みましょう。
http://php.net/manual/ja/control-structures.foreach.php

投稿2019/02/28 13:53

kunai

総合スコア5405

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

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

0

こんな感じにするとよいかも

PHP

1チェックボックスの選択値の保持<br> 2<br> 3<?php 4$array_car=[1=>'セダン',2=>'SUV',3=>'軽自動車']; 5$car = filter_input(INPUT_POST,'car',FILTER_DEFAULT,["flags"=>FILTER_REQUIRE_ARRAY,"options"=>["default"=>[]]]); 6?> 7<form action="" method="post"> 8次の中から好きなタイプをすべて選んでください。<br> 9<?PHP 10foreach ($array_car as $key => $data) { 11 $checked = in_array($key, $car) ? ' checked' : ''; 12 echo '<label><input type="checkbox" name="car[]" value="' . $key . '"' . $checked . '>' . $data . "</label>\n"; 13} 14?> 15<input type="submit" name="btn" value="送信"> 16</form> 17<?php 18if (count($car)>0) { 19 echo implode('、',array_map(function($x) use($array_car){return $array_car[$x];},$car)).'ですね'. '<br>' . "\n"; 20} 21?>

投稿2019/03/01 01:43

yambejp

総合スコア114837

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

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

0

自己解決

print_r($car);

したら、わかりました。

$carは添字配列のため

$car[] = '1';
$car[] = '2';
$car[] = '3';

と値が入っていくので、
foreach ((array)$car as $key => $data) {
echo $key ? '、' : '';
echo $array_car[$data];
}

の$dataにも同じくその値が入っていくというので理解できました。

投稿2019/02/28 23:29

hiro0208

総合スコア75

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問