bug50224.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --TEST--
  2. bug #50224 (json_encode() does not always encode a float as a float)
  3. --SKIPIF--
  4. <?php if (!extension_loaded("json")) print "skip"; ?>
  5. --FILE--
  6. <?php
  7. echo "* Testing JSON output\n\n";
  8. var_dump(json_encode(12.3, JSON_PRESERVE_ZERO_FRACTION));
  9. var_dump(json_encode(12, JSON_PRESERVE_ZERO_FRACTION));
  10. var_dump(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION));
  11. var_dump(json_encode(0.0, JSON_PRESERVE_ZERO_FRACTION));
  12. var_dump(json_encode(array(12, 12.0, 12.3), JSON_PRESERVE_ZERO_FRACTION));
  13. var_dump(json_encode((object)array('float' => 12.0, 'integer' => 12), JSON_PRESERVE_ZERO_FRACTION));
  14. echo "\n* Testing encode/decode symmetry\n\n";
  15. var_dump(json_decode(json_encode(12.3, JSON_PRESERVE_ZERO_FRACTION)));
  16. var_dump(json_decode(json_encode(12, JSON_PRESERVE_ZERO_FRACTION)));
  17. var_dump(json_decode(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION)));
  18. var_dump(json_decode(json_encode(0.0, JSON_PRESERVE_ZERO_FRACTION)));
  19. var_dump(json_decode(json_encode(array(12, 12.0, 12.3), JSON_PRESERVE_ZERO_FRACTION)));
  20. var_dump(json_decode(json_encode((object)array('float' => 12.0, 'integer' => 12), JSON_PRESERVE_ZERO_FRACTION)));
  21. var_dump(json_decode(json_encode((object)array('float' => 12.0, 'integer' => 12), JSON_PRESERVE_ZERO_FRACTION), true));
  22. ?>
  23. --EXPECTF--
  24. * Testing JSON output
  25. string(4) "12.3"
  26. string(2) "12"
  27. string(4) "12.0"
  28. string(3) "0.0"
  29. string(14) "[12,12.0,12.3]"
  30. string(27) "{"float":12.0,"integer":12}"
  31. * Testing encode/decode symmetry
  32. float(12.3)
  33. int(12)
  34. float(12)
  35. float(0)
  36. array(3) {
  37. [0]=>
  38. int(12)
  39. [1]=>
  40. float(12)
  41. [2]=>
  42. float(12.3)
  43. }
  44. object(stdClass)#%d (2) {
  45. ["float"]=>
  46. float(12)
  47. ["integer"]=>
  48. int(12)
  49. }
  50. array(2) {
  51. ["float"]=>
  52. float(12)
  53. ["integer"]=>
  54. int(12)
  55. }