アプリ版:「スタンプのみでお礼する」機能のリリースについて

POST元のページから
<input type="checkbox" name="hoge[23]" value="1">
<input type="checkbox" name="hoge[31]" value="0">
<input type="checkbox" name="hoge[33]" value="1">
・・・
のような形でデータが渡されます。
要素一つに付き、ONなのか、OFFなのか、表示されていないのかの判別が必要なため、このような形になっています。
受けるPHP側で、hogeの配列番号と一致したものがあればそれに対する処理を行う必要があります。
$buff=array(20,30,31);
となっているとして、
$_POST["hoge"]の配列の値と$buff内の数字が一致したら~
(上記例だと31が一致)
の書き方はどう書けばいいでしょうか。

よろしくお願いします。

A 回答 (3件)

$buff = array(20,30,31);


foreach ($_POST['hoge'] as $key => $val) {
if (in_array($key, $buff)) {
// 見つかったときの処理
}
}
    • good
    • 0
この回答へのお礼

ありがとうございました。
うまくいきそうです^^;

お礼日時:2015/01/14 17:45

なんか勘違いしているような?



チェックボックスの値はチェックしないと送られてこないので
例示のデータでもhoge[31]をチェックしないと共通項は得られません。

たとえばこんな感じで、各行にチェックをいれて試してみてください。

<form method="post">
23:<input type="checkbox" name="hoge[23]" value="1"><br>
30:<input type="checkbox" name="hoge[30]" value="0"><br>
31:<input type="checkbox" name="hoge[31]" value="0"><br>
33:<input type="checkbox" name="hoge[33]" value="1"><br>
<input type="submit" value="go">
</form>
<?PHP
$buff=array(20,30,31);
$hoge_keys=isset($_POST["hoge"])?array_keys($_POST["hoge"]):array();
$vals=array_intersect($buff,$hoge_keys);
print_r($vals);
?>

ちなみにhogeのvalueを0や1で変えている意味も説明が足りないと思います。
    • good
    • 0
この回答へのお礼

そうですね、すいません。
値0はhiddenで渡す予定だったので、面倒だったので端折って書いてしまいました。
どうもありがとうございました。

お礼日時:2015/01/14 17:45

こんな感じですかね・・・



$buff=array(20,30,31);
if (isset($_POST['hoge'])&&(is_array($_POST['hoge']))) {
foreach ($_POST['hoge'] as $key=>$val) {
if (in_array($key, $buff)) { echo $key . ' is ON<br>'; }
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2015/01/14 17:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!