php 中的函数返回的访问数组

2022-08-30 08:02:40

我正在使用一个模板引擎,该引擎将代码插入到我想要的位置。

我写了一个函数来测试一些非常简单的东西:

myfunction() { return '($this->data["a"]["b"] ? true : false)'; }

问题是,$this>数据是私有的,我不能在任何地方访问它,所以我必须使用getData();这导致了我的问题。

$this->getData()['a']['b']

不起作用,并且首先分配值也不起作用,因为它将直接在 if() 块中使用。

有什么想法吗?


答案 1

从 PHP 5.4 开始,可以做到这一点:

getSomeArray()[2]

参考资料: https://secure.php.net/manual/en/language.types.array.php#example-62

在 PHP 5.3 或更早版本中,您需要使用临时变量。


答案 2

你不能使用这样的东西:

$this->getData()['a']['b']

也就是说,数组访问语法不能直接在函数调用上实现。

你必须使用一些临时变量,就像这样:

$tmp = $this->getData();
$tmp['a']['b']    // use $tmp, now

在你的情况下,这可能意味着使用这样的东西:

function myfunction() {
  $tmp = $this->getData();
  return ($tmp['a']['b'] ? true : false);
}

您必须:

  • 首先,调用您的方法,并将其返回值存储在临时变量中getData()
  • 然后,使用该临时变量进行测试

实际上,您对此没有太多选择...