gpt4 book ai didi

php - 将值分配给变量私有(private)静态类属性,该属性是类定义内部的数组

转载 作者:搜寻专家 更新时间:2023-10-31 20:43:57 26 4
gpt4 key购买 nike

我想访问私有(private)静态类属性并为其赋值,我想使用“可变变量”的概念进行赋值。访问有效,但分配无效。我尝试了以下方法:

class AClass {
private static $testArray = array();

public static function aFunction() {
$key = 'something';
$arrayName = 'testArray';
$array = self::$$arrayName;
// accessing:
$value = $array[$key]; // This works, $value holds what self::testArray['something'] holds.


// assigning:
// version 1:
$array[$key] = $value; // No error, but self::testArray['something'] does not get updated

// version 2:
self::$$arrayName[$key] = $value; // Error
}
}

另外:我在想出一个准确简洁的标题时遇到了一些麻烦。如果您觉得您理解我的问题并且可以想出更好的标题,请提出建议!

最佳答案

对于版本 1,

您的数组可能是静态数组的副本,因此赋值将仅在本地副本上进行。从 PHP 5 开始,默认情况下,对象通过引用传递,但我认为数组仍然通过副本传递(除非您使用 & 进行特定引用)——不能 100% 确定这一点

对于版本 2,

你应该试试 self::${$arrayName}[$key]

有一个优先顺序问题,你想让PHP在解释[]之前评估你的“var's var”。如果没有 {},PHP 会尝试评估类似于

self::${$arrayName[$key]}

代替

self::${$arrayName}[$key]

关于php - 将值分配给变量私有(private)静态类属性,该属性是类定义内部的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15697145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com