0

特定のディレクトリ内の画像の数をカウントして Web ページに表示するカウンターを構築しています。

私が現在使用しているコードは次のとおりです。

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

これはうまく機能し、次のような数値を出力します: 000,000,5

私が望んでいるのは、区切りのコンマが左ではなく右から3桁ごとに発生するようにすることです。したがって、0,000,005と表示されます

これはどのように行われますか?

sprintf と str_split のコードに多くの変更を試みましたが、今のところ何も機能していません。どんな助けでも大歓迎です!

4

4 に答える 4

0

最後の4行を削除します。必要なのは'printnumber_format($ count);'です。

http://php.net/manual/en/function.number-format.php

編集、上記は先行ゼロでは機能しません

私はこれをphpサイトのコメントで見つけました。少しの正規表現の魔法で1行で実行できます。

print preg_replace("/(?<=\d)(?=(\d{3})+(?!\d))/",",",$count);
于 2012-08-03T05:59:19.727 に答える
0
$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));
于 2012-08-03T05:56:49.997 に答える
0

これが配列に関する私の見解です:

$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;
于 2012-08-03T06:03:12.757 に答える
0
<?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;

?>

ソリューションを実現するための最短の方法を考え出すのは少し楽しかったです。:)

于 2012-08-03T06:05:19.900 に答える