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;
?>