【问题标题】:Finding how many digits does every number has in an array in php [duplicate]在php中查找每个数字在数组中的位数[重复]
【发布时间】:2021-09-15 15:22:03
【问题描述】:

我有一个包含多个数字的数组。 我想要做的是得到一个循环并运行到这个数组中并计算我有多少个两位数,三位数,四位数。

我尝试过的:

$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 -> foreach(myArray as key, value) 或只使用foreach(myArray as value),遍历数组更简单
  • 近骗:stackoverflow.com/a/1762216/2943403;我会努力寻找更好的

标签: php arrays


【解决方案1】:

只是为了它,将它映射为回调:

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

【讨论】:

  • 嗨,你能看看我编辑的问题吗?也许它会让您更清楚地了解我想要实现的目标。我不想要二/三/四位数字的索引,我想统计我有多少个三/四/五位数字。
【解决方案2】:

将长度存储在数组中:

$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 numbers\n";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2021-12-10
    • 2020-10-04
    • 2012-10-05
    • 2015-06-14
    • 2023-03-10
    • 2018-06-01
    • 2022-01-03
    相关资源
    最近更新 更多