if (isset($_GET['str'])) {
fna();
} else {
fnb();
}
function fna(){
// ...
$result = 5;
}
function fnb(){
// ...
$result = 9;
}
function fnc(){
if ($result == 5){
//error - undefined variable $result
}
}
如何在$result
或fna()
之外访问fnb()
?
答案 0 :(得分:1)
这是范围在PHP中的工作方式:名为$result
的变量都是不同的实例,因为它们属于它们出现的函数的范围。
这是一件好事,促进了良好的设计。
您return
和fna
应该fnb
感兴趣的价值,而不是尝试使用所谓的副作用。然后将传递给你的最终函数,以便明确它需要它。所有这些都将使您的代码更具可读性:
$result = isset($_GET['str']) ? fna() : fnb(); // <--- get return value
function fna(){
return 5; // <--- return it
}
function fnb(){
return 9;
}
function fnc($result){ // <--- what the function needs
if ($result == 5){
}
}
fnc($result); // <--- pass the value that the function needs.