簡體   English   中英

這個邏輯運算符有什么快捷方式嗎?

[英]Is there any shortcut for this logical operator?

我只是想知道是否有一個快捷方式來做這樣的例子:

if ( isset($_POST['name']) && $_POST['name'] == 'George' || $_POST['name'] == 'Mike' );

[編輯]:對不起,如果這個問題起初看起來很模糊,但我要問的是“因為我對同一個變量做了所有這些檢查,有沒有更好的方法不寫三次?”

是否有任何更容易的方式是罕見的..

  1. 比築巢更清潔。
  2. 比上面的語法短?
  3. 在任何(Ruby,C#或PHP),因為我主要使用這3種語言。

這只是一個常識性問題,我只是厭倦了編寫嵌套ifs或長邏輯操作,如上所述。

您可以定義獲取發布數據的函數:

function getPOST($name) {
  return isset($_POST[$name]) ? $_POST[$name] : null;
}

該函數永遠不會顯示有關訪問不存在的數組字段的通知,並且結果可以輕松地與示例中的值列表進行比較:

if (in_array(getPOST('name'), array('George', 'Mike')) {

}

我不確定我是否理解你的問題,但看起來你想要將特定變量與一組值進行比較。 您可以執行以下操作:

  1. 將所有值放在數組中。
  2. 檢查變量是否已設置。
  3. 使用in_array函數查找變量值是否存在於值數組中。

在Ruby中

if $_POST['name'] && ['George', 'Mike'].include?($_POST['name'])

使用isset確保值不是NULL然后strlen以確保你實際上有東西在那里。

if(isset($_POST['name']) && strlen($_POST['name']) > 0)
{
    //Do stuff
}
function post_data($key){
    if(isset($_POST[$key]) && $_POST[$key]!='') return $_POST[$key];
    return null;
}

$possible_names  = array('George', 'Mike');

if(in_array(post_data('name'), $possible_names)) {}

嗯,問題非常籠統。 你怎么不多次使用相同的變量名? 那么,你的代碼是什么樣的,我會告訴你:) 一般來說 ,這不是一個可能的問題。 在您的示例中,您可以執行以下操作(在C#中):

string x = "foo";
if ( new string[]{"bar","baz","foo","foobar"}.Contains(x)) ....

要么:

public static class Extensions {
        public static bool In<T>(this T needle, params T[] haystack){
            return haystack.Contains(needle);
        }
    }


string x = "foo";
if (x.In("bar", "baz", "foo", "foobar")) {

Symfony 1.4框架利用sfParameterHolder來處理試圖確定元素是否存在於數組中的問題。

您可以通過在項目中復制/復制sfParameterHolder的功能來清理一些東西。

如果您希望使用該語法清除條件中的所有值,也可以使用switch語句。

最終結果可能如下所示:

$post = new sfParameterHolder($_POST);

switch( $post->get('name') )
{
  case 'george':
  case 'mike':
    // Do something.
    break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM