我問這個MongoDB的用戶組中,但沒有滿意的回答,所以 - 也許有人在計算器能賜教:php/mongodb:引用如何在PHP中工作?
編輯:
我已經重寫我的問題,因爲顯然不清楚,發生了什麼 - 請在回答之前嘗試我的測試代碼。謝謝!
<?php
// test: a
$data = array('x' => 1);
function a(&$data) {
$m = new mongo();
$c = $m->selectDB('test')->selectCollection('test');
$c->insert($data);
}
a($data);
print_r($data);
// test: b
$data = array('x' => 1);
function b($data) {
$m = new mongo();
$c = $m->selectDB('test')->selectCollection('test');
$c->insert($data);
}
b($data);
print_r($data);
// test: c
$data = array('x' => 1);
function c(&$data) {
$data['_id'] = new MongoId();
}
c($data);
print_r($data);
// test: d
$data = array('x' => 1);
function d($data) {
$data['_id'] = new MongoId();
}
d($data);
print_r($data);
?>
輸出:
Array
(
[x] => 1
)
Array
(
[x] => 1
[_id] => MongoId Object
(
)
)
Array
(
[x] => 1
[_id] => MongoId Object
(
)
)
Array
(
[x] => 1
)
我的問題:爲什麼比我的純PHP函數調用傳遞通過引用顯然對工作蒙戈插入不同?
謝謝!
是的,我知道。如果我然後將$ ref傳遞給一個接受參數(比如我的測試函數)的函數,那麼$ ref($ someVar)可以增加更多的數據。 ...但是mongodb-insert不能以這種方式工作。我的問題:爲什麼mongodb-insert方法表現得像它的行爲? – aurora 2010-06-08 19:22:14
babiker,據我所知,文件告訴我。感謝您的幫助,但它不回答我的問題:我不明白這種行爲背後的意義。誰在幕後做魔術?誰保留$ ref從$ ref,爲什麼這種行爲不同於我的普通php測試的行爲? – aurora 2010-06-09 06:13:40
我也想知道魔法從哪裏來 – kylehyde215 2015-05-14 15:49:45