$a = some object;
$b = another object;
function do_some_stuff() {
$c = $a;
$b->a_property = $c;
}
do_some_stuff();
echo $b->a_property; # Undefined, becuase $c was deleted when the function exited.
当我键入$b->a_property = $c
时,我想让PHP中间件做$b->a_property = $a
。如果我无法直接将其分配给$a
,我该怎么做?如何将变量分配给对象,而不是对它的引用?
我实际的代码是:
function setup() {
$playerHeroes = [];
$enemyHeroes = [];
foreach ($entities as $object) {
if ($object->team == "player") {
$playerHeroes[] = $object;
}
else if ($object->team == "enemy") {
$enemyHeroes[] = $object;
}
}
foreach ($playerHeroes as $object) {
$object->target = $enemyHeroes[array_rand($enemyHeroes)];
}
foreach ($enemyHeroes as $object) {
$object->target = $playerHeroes[array_rand($playerHeroes)];
}
}
我有点通过实体的游戏名单,作为要么是对球员的球队或者是敌人的团队。每个英雄都必须瞄准对方球队的英雄。当setup
功能退出时,$object
,$playerHeroes
和$enemyHeroes
被破坏。 ->target
属性稍后访问,它的null
。我该如何做到这一点,以便当我将一个变量分配给一个对象的引用时,它将它分配给该对象本身?
编辑:我希望变量改变时,对象的变化,所以克隆/价值复制不是一个选项。
您错过了将这些$实体放入函数的方法。你也错过了回报。你可以使用'global $ a,$ b;'或者将参数设置为'do_some_stuff($ a,$ b)来执行'function setupt(&$ objectA,&$ objectB)'或者''entities''' –
。 '。 – mega6382