查找php中数组中每个数字的位数

  • 本文关键字:数字 php 数组 查找 php arrays
  • 更新时间 :
  • 英文 :


我有一个数组,其中有几个数字。我要做的是循环运行到这个数组中,数一数我有多少个两位数,三位数,四位数

我已经试过了:

$myArray = array(123,1234,12345,123456,123567);
for($i=1,$size=count($myArray);$i<=$size;i++)
{
if(strlen($i==3)) echo "the number with index " .$i. " is three-digit number.";
else if(strlen($i==4)) echo "the number with index " .$i. " is four-digit number.";
...
}

我也试过这个:

$threeDigits=0;
$fourDigits=0;
$fiveDigits=0;
$sixDigits=0;
$myArray=(123,1234,12345,123456,1234567,111,222)
for($i=1,$size=count($myArray);$i<=$size;i++)
{
if(strlen($==3)) $threeDigits++;
else if(strlen($i==4)) $fourDigits++;
else if(strlen($i==5)) $fiveDigits++;
else if(strlen($i==6)) $sixDigits++;
}
echo "There are " .$fourDigits. " numbers with 4 digits.";
echo "There are " .$threeDigits. " numbers with 3 digits.";
echo "There are " .$fiveDigits. " numbers with 5 digits.";
echo "There are " .$sixDigits. " numbers with 6 digits.";

但不知何故,它只将它们作为一个读取。正如你所看到的,在我的数组中有三个三位数的数字,但是当我把它打印出来的时候,它说我只有一个。你觉得问题出在哪里?

只是为了好玩,把它映射成一个回调:

foreach(array_map('strlen', $myArray) as $key => $len) {
echo "the number with index $key is a $len digit number.";
}

将长度存储在数组中:

$myArray = array(123,1234,12345,123456,123567);
$lengths = [];
foreach ( $myArray as $val ) {
$lengths[strlen($val)]++;
}
foreach (range(2,4) as $len)  {
echo "There are " . $lengths[$len] . " $len-digit numbersn";
}

最新更新