如何访问其功能之外的变量

时间:2018-02-25 12:08:17

标签: php

if (isset($_GET['str'])) {
    fna();
} else { 
    fnb();
}

function fna(){
    // ...
    $result = 5;
}

function fnb(){
    // ... 
    $result = 9;
}

function fnc(){
    if ($result == 5){
        //error - undefined variable $result
    }
}

如何在$resultfna()之外访问fnb()

1 个答案:

答案 0 :(得分:1)

这是范围在PHP中的工作方式:名为$result的变量都是不同的实例,因为它们属于它们出现的函数的范围。

这是一件好事,促进了良好的设计。

returnfna应该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.