2011-11-17 24 views
0

我試圖重現mysql_fetch_object()的功能。如果我理解的很好,它所做的就是返回MySQL查詢作爲stdClass的對象,如果你沒有參數或者其他類,如果你給它的話。重現mysql_fetch_object()的功能

我說我需要重現,因爲我需要破解一個類來與Mongo做這件事。我解釋一下自己。

我從Mongo得到的結果實際上是一個數組,我需要它們將它作爲stdClass或我傳遞給此函數的類來檢索。我如何做到這一點?

預先感謝您

回答

7

您可以將resultent數組轉換成目標

$result= (object) $result_array; 
+0

,如果我不想stdClass的,我想的具有類似Model_Example名稱的對象?謝謝 – udexter

0

是這樣的?

$newObj = array_to_object($yourArray); 
$newObj->SomeField = ...; 

編輯:

function array_to_object($array = array()) { 
    if (!empty($array)) { 
     $data = false; 
     foreach ($array as $akey => $aval) { 
      $data -> {$akey} = $aval; 
     } 
     return $data; 
    } 
    return false; 
} 

然後,您可以通過調用該函數的結果笑,真的,所需要的是$obj = (object)$array

0
$result = new StdClass; 
$result->foo = 'Lorem ipsum'; 
$result->bar = 'Dolor sit amet'; 
var_dump($result); 

...或者乾脆投別的東西作爲對象:

$result = (object)NULL; 
$result->foo = 'Lorem ipsum'; 
$result->bar = 'Dolor sit amet'; 
var_dump($result); 

兩個片段打印相同的輸出:

object(stdClass)#1 (2) { 
    ["foo"]=> 
    string(11) "Lorem ipsum" 
    ["bar"]=> 
    string(14) "Dolor sit amet" 
}