gpt4 book ai didi

php - 获取对数组元素的引用,其中数组可以作为 $obj->$propName 访问

转载 作者:可可西里 更新时间:2023-11-01 00:35:01 25 4
gpt4 key购买 nike

假设我们有这段代码(简化示例):

$propertyName = 'items';
$foo = new \stdClass;
$foo->$propertyName = array(42);

此时我想编写一个表达式,计算结果为对数组内值的引用。

这有可能吗?如果是,怎么做?

将“完成工作”但不是我正在寻找的答案是:

// Not acceptable: two statements
$temp = &$foo->$propertyName;
$temp = &$temp[0];

但是为什么要把它写成两条语句呢?好吧,因为这行不通:

// Will not work: PHP's fantastic grammar strikes again
// This is actually equivalent to $temp = &$foo->i
$temp = &$foo->$propertyName[0];

当然 &$foo->items[0] 是另一个 Not Acceptable 解决方案,因为它修复了属性名称。

万一有人想知道奇怪的要求:我在一个循环中执行此操作,其中 $foo 本身是对图形中某个节点的引用。任何涉及 $temp 的解决方案之后都需要 unset($temp) 以便在下一次迭代时设置 $temp 不会完全搞乱图形;如果您对引用不是特别小心,则可以忽略此 unset 要求,所以我想知道是否有一种方法可以编写此代码,从而减少引入错误的可能性。

最佳答案

像这样的歧义表达式需要解析器的一些帮助:

$temp = &$foo->{$propertyName}[0];

顺便说一句,无论您是在寻找变量别名(又名引用)还是只是寻找值,这都是一样的。如果您使用数组访问表示法,两者都需要它。

关于php - 获取对数组元素的引用,其中数组可以作为 $obj->$propName 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897356/

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