私は現在ダウンロード マネージャーのようなものを書いていますが、それが可能かどうか自問自答していました。
if($ext == ('zip' || 'png')) { echo "Is it possible ?" }
毎回trueを返すので、不可能だと思います。しかし、どうすればこれを簡単に行うことができるか考えていますか? つまり、「if」や「switch」がたくさんあるわけではありません...
とにかくありがとう !:)
私は現在ダウンロード マネージャーのようなものを書いていますが、それが可能かどうか自問自答していました。
if($ext == ('zip' || 'png')) { echo "Is it possible ?" }
毎回trueを返すので、不可能だと思います。しかし、どうすればこれを簡単に行うことができるか考えていますか? つまり、「if」や「switch」がたくさんあるわけではありません...
とにかくありがとう !:)
あなたが使用できるin_array($ext,array('png','zip','another','more'))
ここを参照してください: http://php.net/manual/en/function.in-array.php
if($ext == ('zip' || 'png'))
は次の順序で比較を行っています-> ('zip' || 'png')
、少なくとも1つはnullではないため、TRUEを返します。今、($ext == TRUE)
これを手足に出して、phpがこれを同じように評価していると推測し($ext)
ます。これも当てはまります。
if ( $ext == 'zip' || $ext == 'png' )
あなたが探しているものをチェックします。
switch-caseステートメントを使用できます。
switch($ext)
{
case 'png':
case 'zip':
// Will run for both 'png' and 'zip'
echo "It is possible";
break;
default:
echo "unknown extension!";
break;
}
正規表現を使用できます。
if(preg_match("/^(zip|png)$/", $ext) { echo “It is possible!” }
関連する質問:正規表現を使用した PHP でのファイル拡張子の確認
if(($ext == 'zip') || ($ext == 'png')) { echo "It's possible." }
ちょっとしたアドバイス:PHPは、ifステートメントの条件付き部分にある場合、実際にはゼロ以外の値が「真」であると見なされるという意味で、Cブール型の処理に似ています。たとえば、比較構文と型で「=」記号を見逃しif($var = "val")
たif($var == "val")
場合、そのステートメントでは常に真の値が得られます。これは、「=」演算子が右側の部分「val」からのset-operation値の結果として返されるためです。つまり、順番に「true」に変換されます。したがって、この状況で比較条件の原因の左側にリテラルを書き込むことをif("val" == $var)
お勧めします。この状況では、「==」比較で「=」記号を1つ失うとエラーが発生します。
したがって、ifステートメントは次のようになります。
if('zip' == $ext || 'png' == $ext) { echo "Is it possible ?" }
また、「zip」および「png」リテラルをFILE_TYPE_ZIP、FILE_TYPE_PNGという名前の定数に入れるか、ソースページの上部にあるグローバルPHP配列のような列挙型エンティティを定義するか、別のエンティティを作成する方がよいでしょう。プログラムでサポートされているファイルタイプを強調する外部ファイルのクラスSupportedFileTypes(この場合、詳細についてはPHPと列挙を確認してください)。
開発の開始時に、パフォーマンスの問題を気にする必要はありません。将来、読みやすく、進化/最適化するのが簡単なコードを作成することが重要です。
それは間違いなく可能ですが、そこで行っているのは間違ったコードです。これがあなたが書いたものです:
if($ext == ('zip' || 'png')) { echo "Is it possible ?" }
そして、これがphpで何に変換されるかです:
if( (if $ext evaluates to true then return true) == ( if 'zip' evaluates to true then return true || if 'png' evaluates to true then return true ) )
したがって、「zip」はphpで定義されている「empty」または「false」の値ではなく、「png」でもないため、基本的に次のifステートメントを実行しています。
if($ext == true)
空でない場合は、空になります。
あなたが欲しいのは-前述のように:
if($ext == 'zip' || $ext == 'png')
if (in_array($ext, array('png', 'zip'))) {
echo "Is it possible ?"
}
複数回必要な場合は、配列をどこかに保存できます。