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

ifを使って複数の変数にデータがあるかどうかの条件式を作りたいのですが、うまくできません。

if(empty($hensu1) or empty($hensu2)){
$test = "";
}
else{
$test = 'テストです';
}

$hensu1か$hensu2のどちらかにデータがある場合のみ、$test = 'テストです'にしたいと思っています。

しかしながら上記だと$hensu1にデータがある場合のみしか$test = 'テストです'になりませんでした。

$hensu2にだけデータがあるときには$test = "";になってしまいます。

どこが原因なのでしょうか?

A 回答 (4件)

ちょっと確認したいんだけど, 「しかしながら上記だと$hensu1にデータがある場合のみしか$test = 'テストです'になりませんでした」というのは


$hensu1 にデータがあって $hensu2 にはデータがない
場合でも確認していますか?

なんとなく
if (! empty($hensu1) or ! empty($hensu2)){
$test = 'テストです';
}
else{
$test = "";
}
っぽいんだけど....
    • good
    • 0
この回答へのお礼

ありがとうございます!
おっしゃるとおり、if (! empty($hensu1) or ! empty($hensu2)){ で期待した動きになりました。

しかしながらNo.2さんの
if(isset($hensu1) or isset($hensu2)){ ではダメでした。

私としては
if (! empty($hensu1) or ! empty($hensu2)){

if(isset($hensu1) or isset($hensu2)){ 
は同じ動作をすると思っていたのですが、なぜ違う結果になってしまったのでしょうか。

なんだか頭がこんがらがってしまいました。。

お礼日時:2015/11/24 20:21

こんなかんじではなでしょうか。



if(isset($hensu1) or isset($hensu2)){
$test = "テストです";
}
else{
$test = 'テストではありません';
}
    • good
    • 0
この回答へのお礼

ありがとうございます!
私の質問自体がダメだったみたいで、if(isset($hensu1) or isset($hensu2)){ を試して見たところ、うまくいきませんでした。
申し訳ありませんでした。

お礼日時:2015/11/24 20:23

提示の条件では


>$hensu2にだけデータがあるときには$test = "";になってしまいます。
というのは合致しないと思いますが・・・

まず、emptyの守備範囲を確認

$hensu=null;
if(empty($hensu)) print 1;
$hensu=false;
if(empty($hensu)) print 2;
$hensu=0;
if(empty($hensu)) print 3;
$hensu="";
if(empty($hensu)) print 4;
$hensu="0";
if(empty($hensu)) print 5;
$hensu=array();
if(empty($hensu)) print 6;
unset($hensu);
if(empty($hensu)) print 7;

http://php.net/manual/ja/types.comparisons.php

そのうえで、命題が$hensu1および$hensu2について
どちらか一方だけにしかデータがない状況を確認したいのであればxorで比較するとよいかも
    • good
    • 0
この回答へのお礼

ありがとうございます!
おっしゃるとおり、私の提示条件がダメだったみたいです。
申し訳ありませんでした。

お礼日時:2015/11/24 20:24

#3 でも言われていますが, ! empty と isset は判定基準が違います. ちょっと探してみると


http://starzero.hatenablog.com/entry/20101117/12 …
なんかが見つかります.
    • good
    • 0
この回答へのお礼

Tacosanさん、詳しいページをありがとうございます。
よく読んで確かめてみてます。
なんどもありがとうございました。

お礼日時:2015/11/25 02:25

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