说我有:
$n = 963205;
如何找出第二个数字(6
)的例子?只是转换为字符串并使用substr()
?
答案 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