php配列が文字列に変換され、データベースが格納されます.

3154 ワード

phpオブジェクトの文字を変換してデータベースを格納する方法.
よく知られているオブジェクトは、データベースに直接格納できません.では、どのような方法でデータベースに格納できますか?
方法1:serializeunserializeをシーケンス化する serialize unserialize
配列値に二重引用符、一重引用符、コロンなどの文字が含まれている場合、逆シーケンス化されると問題が発生する可能性があります.
この問題を克服するためにbase 64_を使用することができます.encodeとbase 64_decode.
しかしbase 64符号化は文字列の長さを増加させる.この問題を克服するためにgzcompressと併用できます.
//              
function my_serialize( $obj ) 
{ 
   return base64_encode(gzcompress(serialize($obj))); 
} 
//    
function my_unserialize($txt) 
{ 
   return unserialize(gzuncompress(base64_decode($txt))); 
}

方法2:json_encodeとjson_decode
JSON形式のシーケンス化と逆シーケンス化を使用するのは良い選択です.
json_の使用encodeとjson_decodeフォーマットの出力はserializeとunserializeフォーマットよりずっと速いです.
JSON形式は読み取り可能です.
jsonフォーマットは多くの言語で解析できます
方法3:var_义齿
var_export関数は変数を文字列として出力します.evalは文字列をPHPコードとして実行し,最初の変数の内容を逆シーケンス化する.
$str="array (
        0 => 'a',
        1 => 'b',
        2 => 'c',
)";
$arr=eval("return {$str};");
//   
array (
        0 => 'a',
        1 => 'b',
        2 => 'c',
)
$re=var_export($reArr, true);
//   
"array (
        0 => 'a',
        1 => 'b',
        2 => 'c',
)";

方法4:wddx_serialize_valueとwddx deserialize
wddx_serialize_value関数は配列変数をシーケンス化し、XML文字列として出力できます.