serialization_arrays_001.phpt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. --TEST--
  2. Test serialize() & unserialize() functions: arrays (circular references)
  3. --INI--
  4. serialize_precision=100
  5. --FILE--
  6. <?php
  7. /* Prototype : proto string serialize(mixed variable)
  8. * Description: Returns a string representation of variable (which can later be unserialized)
  9. * Source code: ext/standard/var.c
  10. * Alias to functions:
  11. */
  12. /* Prototype : proto mixed unserialize(string variable_representation)
  13. * Description: Takes a string representation of variable and recreates it
  14. * Source code: ext/standard/var.c
  15. * Alias to functions:
  16. */
  17. echo "\n--- Testing Circular reference of an array ---\n";
  18. echo "-- Normal array --\n";
  19. $arr_circ = array(0, 1, -2, 3.333333, "a", array(), &$arr_circ);
  20. $serialize_data = serialize($arr_circ);
  21. var_dump( $serialize_data );
  22. $arr_circ = unserialize($serialize_data);
  23. var_dump( $arr_circ );
  24. echo "\n-- Associative array --\n";
  25. $arr_asso = array("a" => "test");
  26. $arr_asso[ "b" ] = &$arr_asso[ "a" ];
  27. var_dump($arr_asso);
  28. $serialize_data = serialize($arr_asso);
  29. var_dump($serialize_data);
  30. $arr_asso = unserialize($serialize_data);
  31. var_dump($arr_asso);
  32. echo "\nDone";
  33. ?>
  34. --EXPECTF--
  35. --- Testing Circular reference of an array ---
  36. -- Normal array --
  37. string(238) "a:7:{i:0;i:0;i:1;i:1;i:2;i:-2;i:3;d:3.333333000000000101437080957111902534961700439453125;i:4;s:1:"a";i:5;a:0:{}i:6;a:7:{i:0;i:0;i:1;i:1;i:2;i:-2;i:3;d:3.333333000000000101437080957111902534961700439453125;i:4;s:1:"a";i:5;a:0:{}i:6;R:8;}}"
  38. array(7) {
  39. [0]=>
  40. int(0)
  41. [1]=>
  42. int(1)
  43. [2]=>
  44. int(-2)
  45. [3]=>
  46. float(3.333333)
  47. [4]=>
  48. string(1) "a"
  49. [5]=>
  50. array(0) {
  51. }
  52. [6]=>
  53. &array(7) {
  54. [0]=>
  55. int(0)
  56. [1]=>
  57. int(1)
  58. [2]=>
  59. int(-2)
  60. [3]=>
  61. float(3.333333)
  62. [4]=>
  63. string(1) "a"
  64. [5]=>
  65. array(0) {
  66. }
  67. [6]=>
  68. *RECURSION*
  69. }
  70. }
  71. -- Associative array --
  72. array(2) {
  73. ["a"]=>
  74. &string(4) "test"
  75. ["b"]=>
  76. &string(4) "test"
  77. }
  78. string(37) "a:2:{s:1:"a";s:4:"test";s:1:"b";R:2;}"
  79. array(2) {
  80. ["a"]=>
  81. &string(4) "test"
  82. ["b"]=>
  83. &string(4) "test"
  84. }
  85. Done