php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #11168 Problem with serializing more dimensional array with references ...
Submitted: 2001-05-29 08:17 UTC Modified: 2001-09-03 14:59 UTC
From: maverick at wallstreet-develop dot de Assigned:
Status: Closed Package: Arrays related
PHP Version: 4.0.5 OS: RedHat
Private report: No CVE-ID: None
 [2001-05-29 08:17 UTC] maverick at wallstreet-develop dot de
Here is the smallest programm I could make to reproduce the problem.

<?
    $a[0][0]="Ape1";
    $a[1][0]="Ape2";
    $a[0][one]=&$a[0][0];
    $a[1][two]=&$a[1][0];

    $wrong_a=unserialize( serialize ( $a) );
    echo "Wrong:\n";
    print_r( $wrong_a );
    echo "Right:\n";
    print_r( $a );
?>

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-31 11:10 UTC] sander@php.net
Not a bug. 
Making it a feature request.
Duplicate of 10863.
 [2001-09-01 22:41 UTC] joey@php.net
I'm afraid I just don't see the "bug" here. On
my machine, this shows:

Wrong:
Array
(
    [0] => Array
        (
            [0] => Ape1
            [one] => Ape1
        )

    [1] => Array
        (
            [0] => Ape2
            [two] => Ape2
        )

)
Right:
Array
(
    [0] => Array
        (
            [0] => Ape1
            [one] => Ape1
        )

    [1] => Array
        (
            [0] => Ape2
            [two] => Ape2
        )

)

What's the problem?
 [2001-09-02 04:44 UTC] sander@php.net
Well... I thought serialize couldn't handle references at all... but it can (the manual confirms that). So it's not a feature request.

But there IS a bug seomwhere... look at the following output made with PHP-4.0.6 (tested on Windows 2000 and Debian Linux):

Wrong:
Array
(
    [0] => Array
        (
            [0] => Ape1
            [one] => Ape1
        )

    [1] => Array
        (
            [0] => Ape2
            [two] => Array
 *RECURSION*
        )

)
Right:
Array
(
    [0] => Array
        (
            [0] => Ape1
            [one] => Ape1
        )

    [1] => Array
        (
            [0] => Ape2
            [two] => Ape2
        )

)

print_r($wrong_a[1][two]); results in:
Array
(
    [0] => Ape2
    [two] => Array
        (
            [0] => Ape2
            [two] => Array
                (
                    [0] => Ape2
                    [two] => Array
 *RECURSION*
                )

        )

)
 [2001-09-03 14:59 UTC] joey@php.net
This is fixed in CVS. It will be part of 4.0.7. Thanks
for both the report and tracking down the change. :)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 23 23:01:29 2024 UTC