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));
また、あなたが何をしようとしているのか、またはシリアライゼーションと何の関係があるのか もよくわかりません。