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

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

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

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

Q&A

解決済

3回答

1406閲覧

配列とarray_searchの$row[0]が一致する場合のみ出力

rainbowsix

総合スコア102

PHP

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

0グッド

0クリップ

投稿2017/06/19 15:07

編集2017/06/19 15:52

PHP

1$array = array("1", "3", "5"); 2while($row = $resList->fetchRow()){ 3 if (array_search($row[0], (array)$array) !== FALSE) 4 { 5 echo "<input type= 'checkbox' name='[$row[0]]' value='$row[0]' checked >"; 6 } 7 else {echo "<input type= 'checkbox' name='[$row[0]]' value='$row[0]' >";} 8}

丸投げですみません。PHP初心者です。

$row=array("1", "2", "3","4", "5", "6");
です。

$arrayの1、3、5と$row[0]が一致する場合のみ
echo "<input type= 'checkbox' name='[$row[0]]' value='$row[0]' checked >";
を出力したいです。

ほしい結果↓
<input type= 'checkbox' name='1' value='1' checked >
<input type= 'checkbox' name='1' value='2'>
<input type= 'checkbox' name='3' value='3' checked >
<input type= 'checkbox' name='1' value='4'>
<input type= 'checkbox' name='5' value='5' checked >
<input type= 'checkbox' name='1' value='6'>

上記のコードで問題ないでしょうか?

よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

echo部分多分間違ってます。

<?php $array = array("1", "3", "5"); $array2 = array(array("1"), array("2"), array("3"), array("4"), array("5"), array("6"), ); foreach($array2 as $row) { if (array_search($row[0], $array) !== FALSE) { echo "<input type='checkbox' name='{$row[0]}' value='{$row[0]}' checked >" . PHP_EOL; } else { echo "<input type='checkbox' name='{$row[0]}' value='{$row[0]}'>" . PHP_EOL; } }

で出るかと思います(試せるように配列定義などなどしてます&nameのところの出し方ルールが不明なので適当です)

※質問のところで、ほぼほぼテストできるぐらいに記述できてるので、一度実際にどう表示されるのか試すのがいいかと思います。

投稿2017/06/19 15:56

編集2017/06/19 15:59
rururu3

総合スコア5545

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

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

rainbowsix

2017/06/19 16:29

回答あるがとうございます! $resJobs->fetchRow()でDBのデータを読みこむと $array2 = array(array("1"),array("2"),array("3").... のように格納されるということでしょうか?
rururu3

2017/06/19 16:52

fetchRowがPEAR::DBの命令と思うので詳しくは http://www.php-labo.net/tutorial/class/pear.html を見ればと思います。 リンク先の while ($data = $sth->fetchRow(DB_FETCHMODE_ORDERED)) { echo '<p>' . $data[0] . ':' . $data[1] . "</p>\n"; } の部分が当てはまるのではと思いますよ。
guest

0

<input type= 'checkbox' name='1' value='1' checked >
<input type= 'checkbox' name='1' value='2'> <input type= 'checkbox' name='3' value='3' checked > <input type= 'checkbox' name='1' value='4'> <input type= 'checkbox' name='5' value='5' checked > <input type= 'checkbox' name='1' value='6'>

いくつかあります。
基本的にnameについて数字だけを指定するのはよくないとされます。
1文字目がアルファベットになるよう調整下さい

また今回の命題に関係ないからだと思いますが、2,4,6のnameが1と同じものを指定しています。
formで送るときに上書きされるのできちんとユニークなnameをつけるようにして下さい。
一応PHPの慣習でcheckboxの場合x[]のような形式をつかうと配列で受けられることになっています。

その上で以下のような方式でチェックを引き継ぐといいでしょう。

PHP

1$checked["c"]=array_fill(1,6,"");//デフォルト空 2/*以下本来ならDBからfetchする*/ 3$a=[1,3,5]; 4foreach($a as $val){ 5$checked["c"][$val]=" checked"; 6} 7print <<<eof 8<input type= 'checkbox' name='c[]' value='1'{$checked["c"][1]}> 9<input type= 'checkbox' name='c[]' value='2'{$checked["c"][2]}> 10<input type= 'checkbox' name='c[]' value='3'{$checked["c"][3]}> 11<input type= 'checkbox' name='c[]' value='4'{$checked["c"][4]}> 12<input type= 'checkbox' name='c[]' value='5'{$checked["c"][5]}> 13<input type= 'checkbox' name='c[]' value='6'{$checked["c"][6]}> 14eof; 15

投稿2017/06/20 01:22

yambejp

総合スコア114769

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

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

0

判定部分は問題ないようです。
ただ出力しているものが期待しているものとは異なっているようでした。
(nameの値に[]がついている)
また余談ですが、出力処理において"checked"より前は同じものを出力しているので、echoがふたつあると二重管理になってしまいよろしくありません。
上記を踏まえて次のようにしてみました。
参考にしてください。

PHP

1$checked = (array_search($row[0], $array) !== FALSE)? " checked": ""; 2echo "<input type= 'checkbox' name='$row[0]' value='$row[0]'" . $checked . ">";

投稿2017/06/19 23:45

ttyp03

総合スコア16998

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問