我有一些数据表示为多维数组。我想将这些数据嵌入到我的 OO 应用程序中,并为这些数据提供额外的功能,但也想通过传统的随机访问和使用迭代器来访问它(所以我可以使用 foreach)。换句话说,我想为多维数组实现一个包装类。
我已经尝试过的:
一、ArrayAccess
这个问题是服务器使用PHP 5.2.17&offsetGet()
报错,无法通过引用返回,也就是无法实现多维元素访问:
$obj[$key1][$key2] = $value;
请注意,升级到较新的 PHP 版本目前不是一个选项
二、使用魔术方法 这有点棘手,但是当我尝试使用变量作为键时,我的问题就出现了。例如
$obj->$key1[$key2] = $value;
解释器首先评估$key1[$key2]
抛出一个通知并返回 $key1 的第一个字符,并将其用作我数组上的键。这个我也不知道怎么解决。我曾想过使用方括号来强制操作优先级,但这与我下一次尝试的问题相同:
三、使用简单的 get 和 set 函数 再说一遍,旧的 PHP。当我尝试写作时它哭了:
$obj->get($key1)[$key2] = $value;
因为它不知道如何索引以圆括号结尾的表达式。
仍然有失策的选择:将数组公开并一起忘记 OO。但在我去那里之前,我想确定真的没有其他方法可以做到这一点。