money.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * 中文金额转换示例.
  4. */
  5. require_once dirname(__DIR__) . '/vendor/autoload.php';
  6. use Yurun\Util\Chinese\Money;
  7. function test($number)
  8. {
  9. $chinese = Money::toChinese((string) $number, [
  10. 'tenMin' => true, // “一十二” => “十二”
  11. ]);
  12. $afterMoney = Money::toNumber($chinese);
  13. echo $number, '=>', $chinese, '=>', $afterMoney, '=>', 0 === bccomp($number, $afterMoney, 4) ? 'true' : 'false', \PHP_EOL;
  14. }
  15. /**
  16. * 随机生成文本.
  17. *
  18. * @param string $chars
  19. * @param int $min
  20. * @param int $max
  21. *
  22. * @return string
  23. */
  24. function text($chars, $min, $max)
  25. {
  26. $length = mt_rand($min, $max);
  27. $charLength = mb_strlen($chars);
  28. $result = '';
  29. for ($i = 0; $i < $length; ++$i)
  30. {
  31. $result .= mb_substr($chars, mt_rand(1, $charLength) - 1, 1);
  32. }
  33. return $result;
  34. }
  35. /**
  36. * 随机生成数字.
  37. *
  38. * @param int $min
  39. * @param int $max
  40. *
  41. * @return string
  42. */
  43. function digital($min, $max)
  44. {
  45. return text('0123456789', $min, $max);
  46. }
  47. $count = 10;
  48. echo '整数:', \PHP_EOL;
  49. for ($i = 1; $i <= $count; ++$i)
  50. {
  51. do
  52. {
  53. $number = ltrim(digital(1, 14), '0');
  54. } while ('' == $number);
  55. test($number * [1, -1][mt_rand(0, 1)]);
  56. }
  57. echo \PHP_EOL;
  58. echo '小数:', \PHP_EOL;
  59. for ($i = 1; $i <= $count; ++$i)
  60. {
  61. do
  62. {
  63. $number = ltrim(digital(1, 14), '0');
  64. } while ('' == $number);
  65. $number .= '.' . digital(1, 4);
  66. test($number * [1, -1][mt_rand(0, 1)]);
  67. }
  68. echo \PHP_EOL;