有没有一种可能的方法将 if 函数和 isset 函数(或其他函数)组合成一个函数。
例如:
if(isset($_GET['test'])){
echo "It exists";
}
进入
exitsts($_GET['test']){
echo "It exists";
}
我在google和stackoverflow上搜索并使用了多种方式来描述它。但没有解决办法。
那么有没有解决办法呢?
提前致谢!
布拉姆锤
不,这是不可能的。if 不是一个函数,而是一个语法元素。通常在大多数编程语言中,您都有函数,它们接受值和返回值(并且可能在过程的背后做一些事情)和语法元素,它们可用于构造代码并使其以某些方式运行,例如分支(if-then-else),循环(for,while 等)。大多数语言的区别很简单:如果它后面有一段代码,那么它就是一个句法元素,如果它被某种方式调用,它就是一个函数。然而,这可能不适用于所有语言。
通常不可能添加自己的语法元素,除非语言通过一些元编程工具明确允许它,例如宏或用于扩展语言的其他强大工具。据我所知,PHP 不提供任何此类工具。为不提供开箱即用的语言获取它们的一种方法是使用额外的预处理器,例如 M4。然而,这很少有用。
一些语言还允许将代码块视为值,因此在这种情况下,您可以以与句法元素类似的方式使用函数,将尚未评估的代码传递给它们。如果不能直接使用代码块,可能语言提供了匿名函数或匿名类,可以用来模拟这种情况。然而,通常这些模拟的控制结构并不像内置的控制结构那样好看。我不确定 PHP 是否允许匿名函数或类,您也许可以构建类似您想要的结构的东西,但它看起来会非常难看。
创建自定义函数:
function exitsts($var){
if(isset($var)){
return "It exists";
}
else{
return "doesn't exsits";
}
}
然后检查:
echo exitsts($_GET['test']);
有,用空
if(!empty($_GET['test'])){
/* matches
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)
*/
}