是否有可能将数组传递给函数并返回相同的数组对象?
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); 导致:
array(1) {
["foo"]=>
array(1) {
[0]=>
string(3) "bar"
}
}但我想要:
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的内容。
发布于 2014-08-16 13:43:00
您需要使用引用参数,以便函数中的更改将修改原始变量,并返回引用。
function &array_setdefault(&$arr, $key, $dflt) {
if (!array_key_exists($key, $arr)) {
$arr[$key] = $dflt;
}
return $arr[$key];
}将&放在函数名称之前,使其返回一个引用。将&放在参数之前使该参数成为一个引用参数。
https://stackoverflow.com/questions/25340686
复制相似问题