php 如何迭代函数参数并修改空值

tf7tbtn2  于 2023-02-03  发布在  PHP
关注(0)|答案(1)|浏览(139)

我想在传递NULL时将所有参数转换为空字符串。类似于这样,但参数的原始值在我的代码中没有改变。

function loopThroughArgs($a, $b) {
    $args = func_get_args();
    foreach ($args as &$arg) {
        $arg = $arg === null ? "" : $arg;
    }
    
    var_dump($a); // should output an empty string
    var_dump($b); // should output an empty string

}

$a = null;
$b = null;

loopThroughArgs($a, $b);
a0x5cqrl

a0x5cqrl1#

由于func_get_args()返回这些参数的副本,因此它不会自动更改函数参数变量。
可以使用get_defined_vars()重新赋值。循环所有声明的变量,并从$args中为每个变量赋值。如果变量名与args不同,则该名称将出现在if条件中。

<?php

function loopThroughArgs($a, $b) {
    $vars = get_defined_vars();
    $args = func_get_args();
    foreach ($args as &$arg) {
        $arg = $arg === null ? "" : $arg;
    }
    
    $ptr = 0;
    
    foreach($vars as $key => $val){
      ${$key} = $args[$ptr++];
    }
    
    var_dump($a); // should output an empty string
    var_dump($b); // should output an empty string

}

$a = null;
$b = null;

loopThroughArgs($a, $b);

Online Demo

相关问题