【发布时间】:2016-09-10 02:08:46
【问题描述】:
我昨天问了this 问题。答案解决了我的问题,但这是我现在正在处理的问题。
我的班级中有这个数组:
private static $menus = [];
这是一个将Child添加到这个数组的函数:
public static function addChild($item_id, $title, $url, $parent_id, &$array)
{
$child = [
"id" => $item_id,
"title" => $title,
"url" => $url,
"children" => [],
"parent" => $parent_id
];
foreach ($array as $key => &$value) {
if (is_array($value)) {
self::addChild($item_id, $title, $url, $parent_id, $value);
}
if ($key == "id" && $value == $parent_id) {
array_push($array["children"], $child);
}
}
}
这个函数的最后一个参数是一个通过引用传递的数组。我想要的是从函数中删除这个参数,并使用同一个类的静态数组作为引用。
这是我尝试做的:
public static function addChild($item_id, $title, $url, $parent_id, &$array = self::$menus)
但是php不允许我这样做。
我也试过这个:
public static function addChild($item_id, $title, $url, $parent_id, &$array = null){
$array = self::$menus;
但我得到这个错误:
允许内存大小134217728字节用尽(尝试分配1159168字节)
我刚刚学习了这个通过引用传递的概念,所以我不确定使用它有什么限制或如何正确使用它。任何帮助都会挽救我的一天。
【问题讨论】:
-
除了
self::$var之外的任何东西吗?您是否需要该参数,或者您可以在方法内部引用self::$var? -
我不想将此变量作为参数传递,但我仍想在运行时更改我的静态数组,因此通过引用传递,但传递类的静态变量。
-
static并不意味着不能改变,它只是意味着一个类的所有实例将共享完全相同的数据。const表示不变,这意味着你不能改变。 stackoverflow.com/questions/1685922/php5-const-vs-static -
如果你看到我的链接问题,你就会明白我真正需要什么。