PHP 関数 preg_match を使用する独自のカスタム関数を介して値の配列を実行する PHP スクリプトがあります。正規表現が $valueA で、検索する文字列が $valueB である一致を探しています。一致が見つかった場合は、それを $match に返します。それ以外の場合は、IF ステートメントを実行したくありません。
関数が一致する場合 (つまり、TRUE の場合) は、この IF ステートメントの実行に問題はありません。
if ($match = match_this($valueA, $valueB))
{
//do this
}
ただし、追加の条件を比較してそれも TRUE かどうかを確認し、両方が TRUE の場合にのみ IF ステートメントを実行すると、問題が発生します。
if ($match = match_this($valueA, $valueB) && $x == 'x')
{
//do this
}
両方の条件が TRUE の場合に通常どおりステートメントを実行する代わりに、$match の値が本来あるべき値ではなく、$match から 1 を出力してしまいます。
何が起こっているのか、なんとなくわかります。私の IF ステートメントは、match_this(); から返された値ではなく、リテラルのブール値 TRUE を $match に返すだけです。
TRUEの感覚しか返せないからですか?
ネストされた 2 つの IF ステートメントを使用することで問題を回避できますが、コードをきれいにするために、値を返す関数を含む IF で複数の条件を比較できるようにしたいと考えています。
TRUE にはさまざまな種類がありますか? もしそうなら、どうすればこのように比較できますか?それとももっと簡単な方法はありますか?関数内に 2 番目の IF ステートメントを配置して、関数を介して 2 番目の条件を渡すことができると思いますが、その場合、関数はその目的に関して明確に定義されません。
以前にこの問題に遭遇したことがありますが、探しているものがよくわかりませんでした。誰かが助けてくれることを願っています。