【发布时间】:2017-10-15 14:22:53
【问题描述】:
$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。如何做到这一点,以便当我将变量分配给对象的引用时,它会将其分配给对象本身?
编辑:我希望变量在对象更改时更改,因此按值克隆/复制不是一种选择。
【问题讨论】:
-
您缺少将这些 $entities 放入您的函数的方法。你也错过了回报。你可以用
function setupt(&$objectA, &$objectB)或类似的东西$entities -
要么使用
global $a,$b;,要么设置参数为do_some_stuff($a,$b)。
标签: php arrays oop variables reference