PHP 常用例子

在 PHP 中,可以使用下面提到的方法找出给定整数中的位数。

方法1:使用迭代

该方法涉及以下步骤:

Input: MyNum
Step 1: 初始化 count = 0
Step 2: 当 MyNum 不为零时迭代它.
   Step 2a: 通过 (int)(MuNum / 10) 更新 MyNum
   Step 2b: 计数加1
Step 3: Return count 

示例:

Input: 564
count: 0

迭代 1: 
    MyNum: 564 / 10 = 56
    count: 0 + 1 = 1

迭代 2: 
    MyNum: 56 / 10 = 5
    count: 1 + 1 = 2

迭代 3: 
    MyNum: 5 / 10 = 0
    count: 2 + 1 = 3

return count = 3 

下面的代码块显示了上述概念的实现:

<?php
//计算位数的函数
function countDigits($MyNum){
  $MyNum = (int)$MyNum;
  $count = 0;

  while($MyNum != 0){
    $MyNum = (int)($MyNum / 10);
    $count++;
  }
  return $count;
}

$x = 123;
$y = 459709;
echo "$x 包含: ".countDigits($x)." 个数\n";
echo "$y 包含: ".countDigits($y)." 个数\n";
?> 

上面的代码将给出输出如下:

123 包含: 3 个数
459709 包含: 6 个数 

方法2:使用递归

使用递归函数也可以实现上述结果。考虑下面的示例:

<?php
//计算位数的函数
function countDigits($MyNum){
  $MyNum = (int)$MyNum;
  if($MyNum != 0)
    return 1 + countDigits($MyNum/10);
  else
    return 0;
}

$x = 564;
$y = 980620;
echo "$x 包含: ".countDigits($x)." 个数\n";
echo "$y 包含: ".countDigits($y)." 个数\n";
?> 

上面的代码将给出以下输出:

564 包含: 3 个数
980620 包含: 6 个数 

方法 3:使用log函数

log (给定数字的绝对值(以 10 为底)可用于找出给定数字的位数。考虑下面的示例:

<?php
//计算位数的函数
function countDigits($MyNum){
  return (int)log10(abs($MyNum)) + 1;
}

$x = 564;
$y = -12345;
$z = 980620;
echo "$x 包含: ".countDigits($x)." 个数\n";
echo "$y 包含: ".countDigits($y)." 个数\n";
echo "$z 包含: ".countDigits($z)." 个数\n";
?> 

上面的代码将给出以下输出:

564 包含: 3 个数
-12345 包含: 5 个数
980620 包含: 6 个数 

方法 4:使用字符串长度

这可以也可以通过将数字的绝对值转换为字符串,然后找出字符串的长度来获得原始数字的位数。考虑下面的示例:

<?php
//计算位数的函数
function countDigits($MyNum){
  $MyNum = (int)abs($MyNum);
  $MyStr = strval($MyNum);
  return strlen($MyStr);
}

$x = 564;
$y = -12345;
$z = 980620;
echo "$x 包含: ".countDigits($x)." 个数\n";
echo "$y 包含: ".countDigits($y)." 个数\n";
echo "$z 包含: ".countDigits($z)." 个数\n";
?> 

上面的代码将给出以下输出:

564 包含: 3 个数
-12345 包含: 5 个数
980620 包含: 6 个数