現在のコード:
<?php
// See the AND operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' && $some_variable !== 'in' ) {
// Do something
}
?>
そして:
<?php
// See the OR operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' || $some_variable !== 'in' ) {
// Do something else
}
?>
2つの条件を記述するより簡単な(つまり短い)方法はありますか?
注:はい、それらは異なり、コードを短縮するさまざまな方法を期待しています。
最初のコードでは、 @ ShankarDamodaranによって与えられた答え の短い変更を使用できます in_array()
を使用:
if ( !in_array($some_variable, array('uk','in'), true ) ) {
@Fortyがコメントで指摘しているように、PHP 5.4以降で使用可能な[]
表記でさらに短く
if ( !in_array($some_variable, ['uk','in'], true ) ) {
次と同じです:
if ( $some_variable !== 'uk' && $some_variable !== 'in' ) {
...しかし短い。特に、「uk」と「in」以上のものを比較する場合。追加の変数(Shankarは$ osを使用)を使用せず、代わりにifステートメントで配列を定義します。一部の人はそれが汚れていると感じるかもしれませんが、私はそれを迅速かつきちんと見つけます:D
2番目のコードの問題は、次の理由により、TRUEで簡単に交換できることです。
if (true) {
等しい
if ( $some_variable !== 'uk' || $some_variable !== 'in' ) {
文字列の値がAではないかBではないかを尋ねています。Aである場合、Bでもありません。Bである場合は、Aでもありません。そして、Cまたは文字通り他の場合は、また、AでもBでもありません。そのため、このステートメントは常に(ここでシュレッダー法を考慮しない)trueを返します。
PHPで in_array()
を使用できます。
$os = array("uk", "us"); // You can set multiple check conditions here
if (in_array("uk", $os)) //Founds a match !
{
echo "Got you";
}
複数の値をチェックする必要があります。次のコードを使用してみてください。
<?php
$illstack=array(...............);
$val=array('uk','bn','in');
if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack}
?>
Ifステートメントで関数の構築を計画している場合は、in_arrayの使用もお勧めします。とてもきれいです。
変数に値を割り当てようとしている場合は、if/elseショートハンドを使用できます。
$variable_to_fill = $some_variable !== 'uk' ? false : true;
いくつかの基本的な正規表現は、$some_variable !== 'uk' && $some_variable !== 'in':
に対してうまく機能します
if(!preg_match('/^uk|in$/', $some_variable)) {
// Do something
}