You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中能否实现给对象指针赋值变量及$valuess->$loopFetch['fetch']写法?

嘿,这两个问题我刚好熟得很,给你唠唠清楚:

关于给对象指针赋值变量的操作

当然可以实现!在PHP里,对象本身默认就是按引用传递的,不过如果你想要显式地把对象的"指针"(也就是引用)赋值给另一个变量,完全没问题。

举个实际的例子:

class User {
    public $name = '张三';
}

// 创建一个对象
$user = new User();
// 把对象的引用赋值给$userRef,相当于指针操作
$userRef = &$user;

// 修改$userRef的属性,原对象也会跟着变
$userRef->name = '李四';
echo $user->name; // 输出:李四

说白了,PHP里的对象引用就类似其他语言里的指针,通过引用变量操作对象,本质上就是直接操作原对象的内存地址。日常开发里,哪怕不用&,直接把对象赋值给另一个变量,比如$newVar = $user;,其实也是引用传递,修改$newVar的属性同样会影响原对象——不过显式用&可以更明确地表达你要的是指针式的引用关系。

关于$valuess->$loopFetch['fetch']的调用语法

这个语法完全被PHP支持,属于可变属性调用的范畴。

它的执行逻辑是这样的:PHP会先计算$loopFetch['fetch']的值,得到一个字符串(比如假设这个值是"username"),然后把这个字符串作为对象$valuess的属性名,去访问对应的属性。

再给你举个例子验证:

class Order {
    public $totalPrice = 99;
}

$valuess = new Order();
$loopFetch = ['fetch' => 'totalPrice'];

// 调用这个语法,会正确输出99
echo $valuess->$loopFetch['fetch'];

如果担心优先级问题,也可以给数组索引部分加个括号,写成$valuess->($loopFetch['fetch']),结果是完全一样的,不过不加括号PHP也能正确解析,因为数组索引的优先级比对象属性访问更高。

内容的提问来源于stack exchange,提问作者Augustine Sefa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:17:14