ホームページ  >  記事  >  バックエンド開発  >  PHP配列のトランスコーディングに関連する問題

PHP配列のトランスコーディングに関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:33:27698ブラウズ

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 コード
<?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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。