58

現在のコード:

<?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 つの条件を記述するためのより簡単な (つまり、より短い) 方法はありますか?

注:はい、それらは異なります。コードを短縮するさまざまな方法を期待しています。

4

8 に答える 8

128

最初のコードでは、@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 を返します。

于 2013-11-13T09:59:21.620 に答える
18

in_array()PHPで利用できます。

$os = array("uk", "us"); // You can set multiple check conditions here
if (in_array("uk", $os)) //Founds a match !
{
    echo "Got you"; 
}
于 2013-11-13T09:25:26.883 に答える
1

多値チェックが必要です。次のコードを使用してみてください:

<?php
    $illstack=array(...............);
    $val=array('uk','bn','in');
    if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack}
?>
于 2016-05-10T08:29:23.833 に答える