2013-03-01 69 views
2

我有一个简单的php函数。然而,无论如何,它每次都会失败。php - 如果每次都失败

function for determining tomato pic 

echo "$info[2]"; 
function tomato() 
{ 
    if(intval($info[2]) > 60) 
     return "fresh"; 
    else if(intval($info[2]) < 60) 
     return "rotten"; 
} 

它在页面上回显95,但然后返回“烂”。任何想法这与什么呢?

+0

你在哪里定义$ info?传递给你的函数,或(脏)使用全局:'function tomato(){global $ info; [012]“请输入” – 2013-03-01 23:53:57

+0

“如果确实回答了您的问题,请考虑接受答案(点击左侧的勾号) – michi 2013-04-14 12:57:00

回答

3

函数不会继承父范围的变量。有几种方法解决此问题:

1:将它们作为参数

function tomato($info) {...} 
tomato($info); 

2:如果它是一个匿名函数,使用use条款

$tomato = function() use ($info) {...} 

3:(不推荐)使用global关键字来导入变量

function tomato() { 
    global $info; 
    ... 
} 

4 :(非常不好的主意,但为了完整而添加)使用$GLOBALS阵列

function tomato() { 
    // do stuff with $GLOBALS['info'][2]; 
} 
1

你必须知道的函数变量,尝试

function tomato() { 
    global $info; 
    ... 

另外,通过该值作为参数传递给函数:

function tomato($tomatocondition) { 
    if(intval($tomatocondition) > 60) 
     return "fresh"; 
    else if(intval($tomatocondition) < 60) 
     return "rotten"; 

,并调用它...

echo tomato($info[2]); 
+1

请勿使用'global'作为参数传递值。 – 2013-03-01 23:47:52

+0

@crypticツ为什么呢? – michi 2013-03-01 23:49:20

+0

声明全局崩溃的页面...作为函数虽然传递,谢谢! – Ted 2013-03-01 23:49:45