首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组上设置默认值

在数组上设置默认值
EN

Stack Overflow用户
提问于 2014-08-16 13:36:31
回答 1查看 45关注 0票数 0

是否有可能将数组传递给函数并返回相同的数组对象?

代码语言:javascript
复制
function array_setdefault($arr, $key, $dflt) {
    if (array_key_exists($key, $arr)) {
        return $arr[$key];
    }
    $arr[$key] = $dflt;
    return $arr[$key];
}

$errors = ["foo" => ["bar"]];
array_push(array_setdefault($errors, "foo", []), "bim");
array_push(array_setdefault($errors, "bla", []), "wub");

var_dump($errors);    

导致:

代码语言:javascript
复制
array(1) {
    ["foo"]=>
    array(1) {
        [0]=>
        string(3) "bar"
    }
}

但我想要:

代码语言:javascript
复制
array(2) {
    ["foo"]=>
    array(2) {
        [0]=>
        string(3) "bar"
        [1]=>
        string(3) "bim"
    }
    ["bla"]=>
    array(1) {
        [0]=>
        string(3) "wub"
    }
}

也就是说,在没有设置$dflt的情况下,应该在$key数组上设置它。如果以前或在当前对array_setdefault的调用中设置了它,则返回$arr$key的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 13:43:00

您需要使用引用参数,以便函数中的更改将修改原始变量,并返回引用。

代码语言:javascript
复制
function &array_setdefault(&$arr, $key, $dflt) {
    if (!array_key_exists($key, $arr)) {
        $arr[$key] = $dflt;
    }
    return $arr[$key];
}

&放在函数名称之前,使其返回一个引用。将&放在参数之前使该参数成为一个引用参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25340686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档