2012-01-03 188 views
0

我有以下作爲一個字符串輸出創建一個PHP stdClass的對象:如何從一個PHP stdClass的對象

stdClass Object 
(

    [createResult] => stdClass Object 

     (
      [ReturnCode] => 1 
     ) 

) 

我怎樣才能把上面的字符串,並創建一個新的stdClass的對象?我想獲得這樣的值:

$rc = $obj->createResults->ReturnCode; 
+3

你想一個'print_r'輸出轉換成什麼它使用的是?爲什麼?你可能應該使用序列化或其他東西... – ceejayoz 2012-01-03 22:42:27

回答

1

如果你可以改變它輸出到像var_export的方式,你可以事後使用字符串eval把它找回來。

http://www.php.net/manual/en/function.var-export.php

+0

這將無法正常工作。 'var_export'的轉儲會調用靜態方法'__set_state',而'stdClass'沒有。 – Charles 2012-01-03 22:48:08

+0

@Charles,實際上它不起作用,它們有許多解決方法,但它們都需要一些作弊,你可以將整個對象包裝到另一箇中,訪問所有屬性和方法......但這不是我們的情況,你可以使用解析器或其他東西。 – khael 2012-01-03 22:57:34

0

你也可以做這樣的:

<?php 
$s = "stdClass Object 
(

    [createResult] => stdClass Object 

     (
      [ReturnCode] => 1 
) 

)"; 
$s = preg_match("/\s\[ReturnCode\] => \S+\s/", $s, $m); 
echo preg_replace("/\s\[ReturnCode\] => (\S+)\s/", "$1", $m[0]);