在数字中找到N位数

时间:2015-02-14 00:10:10

标签: php

说我有:

$n = 963205;

如何找出第二个数字(6)的例子?只是转换为字符串并使用substr()

是一个好主意

2 个答案:

答案 0 :(得分:2)

substr需要一个字符串,除了一些例外,PHP通常会转换为正确的类型,因此:

$result = substr($n, 1, 1);

或者你还需要一个int:

$result = (int)substr($n, 1, 1);

真的不重要。没有那么简单。你想要一个正则表达式吗?

答案 1 :(得分:1)

仅仅因为使用字符串处理来解决数学问题 错误

function ndigit($in, $digit, $base=10) {
        // how many digits does 0 have?
        // alter the return here to fit your personal philosophy
        if( $in == 0 ) { return 0; }
        // algorithm doesn't work so good with negative numbers, just make it positive.
        if( $in < 0 ) { $in *= -1; }
        // length of the input number
        $len = (int)floor(log($in, $base)) + 1;
        // can't get 8th digit of a 7 digit number
        if( $digit > $len ) { throw new Exception('Supplied digit out of range.'); }
        // digit position counted from the right
        $rpos = $len - $digit;
        // zero out digits to the right
        $tmp = $in - ($in % pow($base, $rpos));
        // remove digits from the right and divide
        return ($tmp % pow($base, $rpos+1)) / pow($base, $rpos);
}

var_dump(ndigit(963205, 3)); // int(6)

您应该可以使用它来查找任何基数中任何数字的 n 数字。例如:

var_dump(ndigit(963205, 2, 16)); // int(11) aka B