php / mongodb: nasıl referanslar php çalışır?

0 Cevap php

: belki stackoverflow birisi beni aydınlatmak - i mongodb kullanıcı grubu bu sordum, ama cevap ile memnun değildi, bu yüzden

EDIT:

Yanıtlamadan önce benim test kodu deneyin lütfen - görünüşe göre ne olduğunu, net değildi çünkü ben sorumu tekrar yazdım. teşekkürler!

<?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);

?>

çıktı:

Array
(
    [x] => 1
)

Array
(
    [x] => 1
    [_id] => MongoId Object
        (
        )

)

Array
(
    [x] => 1
    [_id] => MongoId Object
        (
        )

)

Array
(
    [x] => 1
)

benim soru: neden pass-by-reference gelmez görünüşte düz php işlev çağrısına göre Mongo insert için farklı çalışır?

teşekkürler!

0 Cevap