私はついにこれを理解したと思います。ウィット:
<?php
$post = array();
$post['array1'] = json_encode(array(
'info1' => 'test 1',
'info2' => 'test 2',
'info3' => 'test 3'
));
$post['info4'] = '#';
echo serialize($post);
echo "\n";
var_dump(unserialize(serialize($post)));
?>
http://codepad.org/jaHT6lfW
与えます:
a:2:{s:6:"array1";s:52:"{"info1":"test 1","info2":"test 2","info3":"test 3"}";s:5:"info4";s:1:"#";}
array(2) {
["array1"]=>
string(52) "{"info1":"test 1","info2":"test 2","info3":"test 3"}"
["info4"]=>
string(1) "#"
}
そう:
<?php
$post = array();
$post['array1'] = json_encode(array(
'info1' => 'test 1',
'info2' => 'test 2',
'info3' => 'test 3'
));
$post['info4'] = '#';
$serial = serialize($post);
echo "$serial\n";
$unserial = unserialize(serialize($post));
var_dump($unserial);
$unserial['array1'] = json_decode($unserial['array1']);
var_dump($unserial);
?>
http://codepad.org/mpfDLyvH
正しい出力を提供します。
真剣に、配列を消費した後、データベースに挿入する前に、 JSON ですべてエンコードします。$_POST
そうすれば、このナンセンスについて心配する必要はありません。また、健全性のために、データは実際にはフィールドごとに 1 つの定数型でのみシリアル化する必要があります。