PHP无法在函数外部获取函数内定义变量的问题求解
问题核心原因
PHP中函数内部定义的变量默认属于局部作用域,仅在函数内部生效,函数执行结束后变量就会被回收,无法在函数外部直接访问。你现有代码的调用逻辑也存在错误:你没有给variables()函数定义接收参数的逻辑,且你传入的$var、$var2、$var3在函数外部本身就没有定义,运行会直接报错。
推荐解决方案(最佳实践)
最安全也最通用的方式是将需要对外暴露的变量打包为数组,通过return语句返回,在函数外部接收返回值即可使用:
<?php function variables() { $var = rand(1111,9999); $var2 = rand(11111,99999); $var3 = rand(111111,999999); // 打包所有需要返回的变量 return [$var, $var2, $var3]; } // 方式1:用变量接收返回数组后按索引取值 $allVal = variables(); echo $allVal[0]; // 输出$var的值 echo $allVal[1]; // 输出$var2的值 echo $allVal[2]; // 输出$var3的值 // 方式2:PHP7.1+支持解构赋值直接拿到对应变量 [$var, $var2, $var3] = variables(); echo $var; echo $var2; echo $var3; ?>
其他可选方案(不推荐,仅作了解)
你也可以通过global关键字将函数内部变量声明为全局变量,但是这种方式会污染全局作用域,后续维护容易出现变量冲突,非特殊情况不建议使用:
<?php function variables() { // 声明三个变量为全局作用域 global $var, $var2, $var3; $var = rand(1111,9999); $var2 = rand(11111,99999); $var3 = rand(111111,999999); } // 先执行函数完成全局变量赋值 variables(); echo $var; echo $var2; echo $var3; ?>
内容的提问来源于stack exchange,提问作者Adeel Zaman
相关产品推荐
相关产品推荐

