PHP 配列のトランスコーディングの問題
public function array_iconv($in_charset,$out_charset,$arr){
return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).' ; '));
}
トランスコード中にこの問題が発生しました
致命的なエラー: D:softapachehtdocswebtestarrayiconv.func.php(5) の未定義メソッド stdClass::__set_state() の呼び出し: eval ()'d 1 行目のコード
-----解決策---------
マニュアルには次の内容があります:
_set_state()
静的オブジェクト __set_state (array $properties)
この静的メソッドは、var_export() が呼び出されたときに呼び出されます (PHP 5.1.0 以降) 効率的)。
このメソッドの唯一のパラメータは配列です。これには、array('property' => value, ...) の形式で配置されたクラス プロパティが含まれます。
例 4 __set_state() の使用> (PHP 5.1.0 以降でサポート)
<?php クラスA { パブリック $var1; パブリック $var2; public static function __set_state($an_array) // PHP 5.1.0以降 { $obj = 新しい A; $obj->var1 = $an_array['var1']; $obj->var2 = $an_array['var2']; $obj を返します。 } } $a = 新しい A; $a->var1 = 5; $a->var2 = 'foo'; eval('$b = ' . var_export($a, true) . ';') // $b = A::__set_state(array( // 'var1' => 5, // 'var2' => 'foo', // )); var_dump($b); ?><div class="clear"></div>