这个逻辑运算符是否有任何快捷方式
本文关键字:任何 快捷方式 是否 逻辑运算符 | 更新日期: 2023-09-27 18:31:44
我只是想知道是否有快捷方式可以做类似此示例的事情:
if ( isset($_POST['name']) && $_POST['name'] == 'George' || $_POST['name'] == 'Mike' );
[编辑]:对不起,如果这个问题一开始看起来模棱两可,但我想问的是"既然我正在对同一个变量进行所有这些检查,有没有更好的方法不写三次?
有没有更简单的方法来罕见和..
- 比嵌套更干净。
- 比上面的语法短?
- 在(Ruby,C#或PHP)中的任何一种中,因为我主要使用这3种语言。
这只是一个一般知识问题,我只是厌倦了编写嵌套的ifs或像上面这样的长逻辑运算。
您可以定义一个用于获取帖子数据的函数:
function getPOST($name) {
return isset($_POST[$name]) ? $_POST[$name] : null;
}
该函数永远不会显示有关访问不存在的数组字段的通知,并且可以轻松地将结果与示例中的值列表进行比较:
if (in_array(getPOST('name'), array('George', 'Mike')) {
}
我不确定我是否正确理解了您的问题,但看起来您想将特定变量与一组值进行比较。您可以执行以下操作:
- 将所有值放在一个数组中。
- 检查变量是否已设置。
- 使用
in_array
函数查找变量的值是否存在于值数组中。
在 Ruby 中
if $_POST['name'] && ['George', 'Mike'].include?($_POST['name'])
使用 isset
确保值未NULL
,然后strlen
以确保您确实在其中有东西。
if(isset($_POST['name']) && strlen($_POST['name']) > 0)
{
//Do stuff
}
嗯,这个问题非常笼统。怎么能不多次使用相同的变量名?好吧,你的代码是什么样的,我会告诉你:)一般来说,这不是一个真正可能回答的问题。在您的示例示例中,您可以执行以下操作(在 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;
}
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)) {}