2012-01-03 7 views
0

の出力からPHPはstdClassオブジェクトを作成することができます。どのように私は、文字列として、次のしているPHPはstdClassオブジェクト

stdClass Object 
(

    [createResult] => stdClass Object 

     (
      [ReturnCode] => 1 
     ) 

) 

は、どのように私は上記の文字列を取り、新しいstdClassのオブジェクトを作成することができますか?私はこのような値を取得したいのです:あなたはそれがvar_exportのようなものに出力方法を変更することができる場合、あなたは後でそれを取り戻すためにevalでその文字列を使用することができます

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

あなたはそれがために使用したものに 'print_r'出力を変換したいですか?どうして?あなたはおそらくシリアル化などを使用しているはずです... – ceejayoz

答えて

1
+0

これは動作しません。 'var_export'のダンプは' stdClass'にはない静的メソッド '__set_state'を呼び出します。 – Charles

+0

@Charles実際には動作しませんが、多くの回避策がありますが、すべてが不正行為を必要とし、オブジェクト全体を別のものにラップし、すべてのプロパティとメソッドにアクセスできます...しかし、これは私たちのケースではありません。パーサなど。 – khael

1

あなたが(何らかの理由で)それを変更しますprint_rの出力を使用することはできません場合は、このレシピを試みることができる、それはあなたのために働くかどうかを確認します。 http://www.php.net/manual/en/function.print-r.php#93529

しかし、可能な限り、よりポータブルな形式でデータを保存する必要があります。あなたはPHPのserialize =>unserialize、またはjson_encode =>json_decodeを使用することができます。

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]); 
関連する問題