2012-04-20 73 views
1

我只是想知道如果有一个快捷方式做这样的事情例如:这个逻辑运算符有什么捷径吗?

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

[编辑]:很抱歉,如果这个问题似乎在第一暧昧,但我的意思问的是“因为我做的一切对同一个变量进行的那些检查是否有更好的方法来不写它三次?“

是那里是罕见的任何更简单的方式和..

  1. 比嵌套清洁。
  2. 比上面的语法短?因为我主要使用这三种语言,所以它们(Ruby,C#或PHP)中的任何一种都可以使用

这只是一个普遍的知识问题,我只是厌倦了编写嵌套ifs或像上面那样的长逻辑操作。

+5

当将空($ _ POST [ '名'])永远是假的,如果$ _ POST ['的名字! '] =='东西'是真的?不确定你在这里要求什么。 – aquinas 2012-04-20 18:05:05

+0

对不起,我只是写了一个例子,对同一个变量做很多操作,我会将它编辑为更实用的东西 – 2012-04-20 18:06:13

+1

@aquinas:如果帖子是'0'......有几件事情可以算作空的( )'在PHP的扭曲的悲伤世界中。 – 2012-04-20 18:13:20

回答

2

你可以定义一个函数,用于获取发布数据:

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

功能将永远不会显示有关访问一个不存在的数组字段和结果的通知可以很容易地比较值在您的示例清单:

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

} 
+0

是的,我认为这是不是在这些语言的核心库中内置的“东西”,我只问当我不知道如何形成谷歌问题,谢谢。 – 2012-04-20 18:10:13

+0

我已编辑我的问题以符合您的规格。 – Yogu 2012-04-20 18:20:58

0

使用isset以确保该值不NULL,然后strlen,以确保你确实有东西在里面。

if(isset($_POST['name']) && strlen($_POST['name']) > 0) 
{ 
    //Do stuff 
} 
1

我不知道我是否理解你的问题,但看起来你想比较一个特定的变量与一组值。您可以执行以下操作:

  1. 将所有值放入数组中。
  2. 检查变量是否设置。
  3. 使用in_array函数来查找变量的值是否存在于值数组中。
0
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)) {} 
0

那么,这个问题是非常笼统的。你怎么不能多次使用相同的变量名?那么,你的代码是什么样子,我会告诉你:)在一般这不是一个真正可以回答的问题。在您的例子情况下,你可以做这样的事情(在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")) { 
0

symfony的1.4架构利用sfParameterHolder对付试图问题,以确定是否一个元素存在于数组中。

通过在项目中复制/复制sfParameterHolder的功能,您可以清理一些东西。

如果您希望使用语法来清理条件中的所有值,那么也可以使用switch语句。

最终的结果可能会是这个样子:

$post = new sfParameterHolder($_POST); 

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

在Ruby

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