PHP图像计数器编号格式

PHP图像计数器编号格式,php,image,counter,number-formatting,Php,Image,Counter,Number Formatting,我正在构建一个计数器,它计算并在网页上显示特定目录中的图像数 我目前使用的代码如下: <? $d = opendir("images/myimagefolder"); $count = 0; $min_digits = 7; while(($f = readdir($d)) !== false) if(ereg('.jpg$', $f)) ++$count; closedir($d); if ($min_digits) { $count = sprin

我正在构建一个计数器,它计算并在网页上显示特定目录中的图像数

我目前使用的代码如下:

<?
    $d = opendir("images/myimagefolder");
$count = 0;
     $min_digits = 7;
while(($f = readdir($d)) !== false)
  if(ereg('.jpg$', $f))
     ++$count;
closedir($d);
 if ($min_digits)
{
  $count = sprintf('%0'.$min_digits.'f', $count);
}

$number = $count;
$formattedNumber = sprintf("%07d", $number);
$formattedNumber = str_split($formattedNumber, 3);
$formattedNumber = implode(",", $formattedNumber);

  print "$formattedNumber";
?>

这工作正常,并输出如下数字:0000005

我想要的是让分隔逗号从右到左每隔3位出现一次,因此它将显示为0000005

如何做到这一点

我已经尝试了对sprintf和Stru分割代码的一些修改,但到目前为止没有任何效果。任何帮助都将不胜感激

$formattedNumber=sprintf(“%07d”,$number);
$formattedNumber = sprintf("%07d", $number);
$formattedNumber = str_split(strrev($formattedNumber), 3);
for (i=0;i<count($formattedNumber); i++)
    $formattedNumber[i] = strrev($formattedNumber[i]);
$formattedNumber = implode(",", array_reverse($formattedNumber));
$formattedNumber=str_split(strrev($formattedNumber),3);
对于(i=0;i删除最后四行。您只需“打印数字\格式($count);”

编辑,前面的0不起作用

我在php网站上的评论中发现了这一点。一个小小的正则表达式魔术应该可以在一行中完成

print preg_replace("/(?<=\d)(?=(\d{3})+(?!\d))/",",",$count);

print preg\u replace(“/(?以下是我对数组的看法:

$num    = sprintf("%07d", 5);
$digits = str_split($num, 1);
$digits = array_reverse($digits);
$chunks = array_map('array_reverse', array_reverse(array_chunk($digits, 3)));

$concat_chunks = array();
foreach ($chunks as $chunk) {
    $concat_chunks[] = join('', $chunk);
}

$output = join(',', $concat_chunks);
print $output;


找到完成解决方案的最短方法时,我感到很开心。

谢谢Sean,这很好,并且确实稍微清理了代码,因此我将其标记为我的“已接受”答案。干杯!!感谢您花时间回复,我非常感谢!
<?php

//image count
$images=count(glob("images/myimagefolder/*.jpg"));

//padding
$images=sprintf("%07s",$images);

//commas
$images=strrev(implode(",",str_split(strrev($images),3)));

//outputs 0,000,005
echo $images;

?>