1234567891011121314151617181920212223242526272829303132333435363738394041 |
- <?php
- namespace loyalsoft;
- /**
- * 针对 int 数据做的特殊操作
- * @author gwang
- */
- class Ints {
- /**
- * int 骚操作, 提取第几位到第几位的值(左数)
- * @param int $i Int值
- * @param int $start 左边数第几位, 第一位是0
- * @param int $len 截取长度
- * @param bool $throwException 是否抛出异常,默认false
- * @return string
- * @throws ArgumentOutOfRangeException
- */
- public static function Slice(int $i, int $start, int $len, bool $throwException = false): int {
- $i_len = strlen("$i");
- if ($throwException) {
- if ($start < 0 || $start > 18) {
- throw new \Exception("start is out of range!");
- }
- if ($len <= 0 || $start + $len > $i_len) {
- throw new \Exception("end is out of range!");
- }
- }
- $start = $start < 0 ? 0 : $start;
- $start = $start > $i_len ? $i_len : $start;
- $len = $len < 0 ? 0 : $len;
- $len = ($start + $len) > $i_len ? $i_len - $start : $len;
- $r = (int) Pow(10, $i_len - $start - $len);
- $l = (int) Pow(10, $i_len - $start);
- $ret = $i - intval($i / $l) * $l; // 去除左边
- $ret /= $r; // 去除右边
- return (int) $ret;
- }
- }
|