如何遍历PHP函数参数并将NULL值替换为空字符串
解决PHP函数内修改NULL参数为空字符串不生效的问题
问题原因
PHP默认采用值传递方式传递函数参数,函数内部的$a、$b是外部变量的副本。func_get_args()返回的也是这些参数值的副本数组,修改数组中的元素只会改变数组内的副本,不会影响函数内部的$a、$b变量,更不会同步到外部变量。
解决方案
方案1:使用引用传递参数
将函数参数声明为引用(在参数前加&),这样函数内部对参数的修改会直接作用于原始变量:
function loopThroughArgs(&$a, &$b) { $a = $a === null ? "" : $a; $b = $b === null ? "" : $b; var_dump($a); // 输出 string(0) "" var_dump($b); // 输出 string(0) "" } $a = null; $b = null; loopThroughArgs($a, $b);
如果需要处理任意数量的参数,可以结合可变参数语法:
function loopThroughArgs(&...$args) { foreach ($args as &$arg) { $arg = $arg === null ? "" : $arg; } var_dump($args[0]); // 输出 string(0) "" var_dump($args[1]); // 输出 string(0) "" } $a = null; $b = null; loopThroughArgs($a, $b);
方案2:返回处理后的参数并重新赋值
如果不想使用引用传递,可以在函数内处理参数后返回结果数组,再在外部重新赋值给原变量:
function loopThroughArgs($a, $b) { $args = func_get_args(); foreach ($args as &$arg) { $arg = $arg === null ? "" : $arg; } return $args; } $a = null; $b = null; list($a, $b) = loopThroughArgs($a, $b); var_dump($a); // 输出 string(0) "" var_dump($b); // 输出 string(0) ""
内容的提问来源于stack exchange,提问作者smolo
相关产品推荐
相关产品推荐

