PHP でのシリアル化が期待どおりに機能しない理由を知りたいです。
<?
$x = "whatever...";
$y = array(&$x, "test, 1-2, 1-2...", &$x);
$yy = unserialize(serialize(&$y));
$y[0] = "blah";
echo($yy[0]); // prints 'whatever', was expecting 'blah'
?>
PHP でのシリアル化が期待どおりに機能しない理由を知りたいです。
<?
$x = "whatever...";
$y = array(&$x, "test, 1-2, 1-2...", &$x);
$yy = unserialize(serialize(&$y));
$y[0] = "blah";
echo($yy[0]); // prints 'whatever', was expecting 'blah'
?>
は&
によって無視されserialize
ます。
y
からへのシンボル テーブル エイリアス (参照) を作成しようとしているようですがyy
、ここではできません。に渡す&y
とserialize
、渡された値が参照として扱われたり、インラインでシリアル化されたりしません。さらに、元の値への参照ではなく、まったく新しい値を返します。エイリアスを個別に作成する必要があります。
$yy = &$y;
$yy = unserialize(serialize($y));
また、あなたが何をしようとしているのか、またはシリアライゼーションと何の関係があるのか もよくわかりません。