2011-03-12 91 views
2

我打算创建一个将被其他函数使用的检查函数。这个想法很简单:如果条件不满足,通过返回它来停止函数。如何通过其他函数返回函数

这是原来的代码:

function awesome(){ 
    $a = "2"; 
    if ($a != "1"){return;} 
    echo "awesome"; 
} 

它的工作。因为$ a是2,所以函数返回并且不出现单词“awesome”。但是,有几个功能需要检查。为了避免重复,我做到了这种方式:

function test($var){ 
    if ($var != "1"){return;} 
} 

function awesome(){ 
    test("2"); 
    echo "awesome"; 
} 

function awesomeagain(){ 
    test("3"); 
    echo "awesome"; 
} 

但“真棒” s的出现,并不会返回两个功能真棒()和awesomeagain()。如何通过添加test()函数来返回这两个?

谢谢。我非常感谢你的帮助。

+0

感谢您的编辑。我在这里真的很新,对格式化仍然感到困惑。 – fikrirasyid 2011-03-12 16:06:03

回答

1
function test($var) { 
    return ($var == "1"); 
} 

function awesome() { 
    if (test("2")) { 
     echo "awesome"; 
    } 
} 

function awesomeagain(){ 
    if (test("3")) { 
     echo "awesome"; 
    } 
} 

Fikry,尝试重新学习的conditional的概念,这是基本的编程技能。没有它,你会犯很多错误的代码和功能。

1

从你的函数返回使用return关键字

function test($var){ 
    if ($var == "1"){ 
     return TRUE; 
    } 
} 

function awesome(){ 
    if (!test("2")){ 
     return FALSE; 
    } 
    echo "awesome"; 
    return TRUE; 
} 
0
function test($var) { 
    if ($var != "1"){ 
     return "awesome"; 
    } 
    // do something else when $var is not "1" here. 
} 
function awesome(){ 
    echo test("2"); 
} 
function awesomeagain(){ 
    echo test("3"); 
} 

这就是它! PHP真棒! :)

+0

嗯..我不这样做,因为行动将被放在真棒()和awesomeagain()和这些行动是不同的。顺便说一句,是PHP是真棒。感谢您的回复:D – fikrirasyid 2011-03-12 16:01:51

2

您的test函数必须返回一个值,并且您必须在其他函数中测试此值。事情是这样的:

function test($var) { 
    if ($var != "1") 
    return false; 
    else 
    return true; 
} 

所以,你的代码应该是这样的:

function awesome() { 
    if (test("2")) 
    echo "awesome"; 
} 

但是,如果你想狂热的检查,可以抛出异常。这应该是这样的:

function test($var) { 
    if ($var != "1") 
    throw new Exception(); 
} 

和其他功能的使用

function awesome() { 
    try { 
    test("2"); 
    echo "yeah"; 
    } catch ($e) {}  
} 
+0

哇,谢谢! 'test'是有效的,但我对'awesome()'进行了一些修改,所以代码如下所示:'if(test(“2”)== true)'那么它就像一个魅力:D – fikrirasyid 2011-03-12 15:59:22

+0

在php中,好的做法是检查值和类型,所以使用if(test(“2”)=== true),因为在php中这将返回true(“2”== true),但是(“2”= == true)将返回false。 – dugokontov 2011-03-12 22:08:05

1

fYou可能不应该依赖于另一个功能停止另一个函数的形式运行。试试这个

function test($var){ 
    if ($var != "1"){return false;} return true; 
} 

function awesome(){ 
    if(test("2")) 
    echo "awesome"; 
} 

function awesomeagain(){ 
    if(test("3")); 
    echo "awesome"; 
} 
+0

感谢您的回复,它与之前的回复非常相似,并且只需很小的修改即可:D – fikrirasyid 2011-03-12 16:00:30

相关问题