李涛自留地
回到顶部
首页 > php学习 > PHP自定义函数变量作用域用法解析

PHP自定义函数变量作用域用法解析

文章目录

我们在PHP中定义一个自定义函数的时候,我们会在函数名后的()内带上一定的变量参数,这些变量参数实际上只能在这个自定义函数体内运行,如果函数体外有相同的变量名的时候,这两个变量实际上是不一样的,这就是PHP自定义函数的变量作用域,一般情况下我们是无法使用自定义函数体外的变量,但是我们可以通过PHP超全局变量将自定义函数外的变量拿到自定义函数体内使用。

PHP自定义函数变量是否能在函数外调用

文章开篇已经说了在PHP中自定义函数中的变量在函数体外是无法调用的,下面通过一个实例来测试一下:

<?php
function aa($a=12,$b=16){
    $result = $a*$b;
    return $result;
}

echo '函数aa的输出结果为:'.aa().'<br>';
if (empty($a)){//检查$a变量是否为空,
    echo '$a的值变量为空';//如果$a变量为空输出本句。
}else{
    echo '$a的值为:'.$a;//如果$a变量不为空则输出本句并输出变量$a的值。
}
?>

测试页面显示结果:

PHP自定义函数变量作用域用法解析

在上面实例中,我在输出了自定义函数aa后,我用if…else和empty()函数对$a变量做了一个是否为空的判断,结果验证了上述说法,最终显示结果为$a变量是否为空。

PHP自定义函数能否直接使用函数体外变量?

PHP自定义函数是不能直接使用自定义函数体外变量的,下面通过实例代码来验证:

<?php
$outside = 13+15;
function aa($a=12,$b=16){
    $result = $a*$b*$outside;
    return $result;
}

echo '函数aa的输出结果为:'.aa().'<br>';
?>

执行文件后显示结果:

PHP自定义函数变量作用域用法解析

执行后显示的结果是0,在我使用的VSCode编辑器中直接将$outside下面显示了红色波浪线报错显示。

PHP自定义函数变量作用域用法解析

放在$outside变量上显示出“Undefined variable '$outside' ”意思就是未定义$变量,所以最终导致最后的运算结果为0,这就充分说明我们不能直接使用自定义函数体外的变量。

PHP自定义函数正确使用函数体外变量

在本文开篇也提到了PHP自定义函数如果需要使用函数体外变量,则需要使用超全局变量将函数体外的变量拿到函数中,这样才能正确的将函数体外的变量拿到函数体内使用。

下面是一个使用超全局变量global的一个实例:

<?php
echo '<style>*{margin:30px;}</style>';
$c = 13;
$d = 15;
$outside = 13+15;
function aa($a=12,$b=16){
    global $c,$d; //使用global全局变量引入外部的变量$c和$d;
    $outside = $c+$d;
    $result = $a*$b*$outside;
    return $result;
}

echo '函数aa的输出结果为:'.aa().'<br>';
if (empty($a)){//检查$a变量是否为空,
    echo '$a的值变量为空';//如果$a变量为空输出本句。
}else{
    echo '$a的值为:'.$a;//如果$a变量不为空则输出本句并输出变量$a的值。
}
?>

访问文件显示结果截图:

PHP自定义函数变量作用域用法解析

经过检查运算结果,确实正确的将自定义函数aa体外变量$c和$d拿到函数体内并正常的进行运算。

今天主要通过几个实例加深了对PHP自定义函数变量作用域知识的理解,进一步加深了对PHP自定义函数变量是否能在函数外调用、PHP自定义函数能否直接使用函数体外变量及PHP自定义函数正确使用函数体外变量的方法的理解和运用。

若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。