$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