回答:
使用sprintf
:
sprintf('%08d', 1234567);
または、次のように使用することもできますstr_pad
。
str_pad($value, 8, '0', STR_PAD_LEFT);
sprintf('%+03d:00 UTC',$i)
場合$i
は、必要に応じて+または-を印刷し、2桁未満の数字には先行ゼロを付けます。SELECT
HTMLでタイムゾーンを作成するのに最適です。
1の代わりに01が必要な場合、次の方法でうまくいきました。
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
sprintf
必要なものです。
上記のリンクされたページからの編集(どういうわけか、賛成投票によって要求されました)のサンプルは、「ゼロが埋め込まれた整数」です。
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
簡単な答え
$p = 1234567;
$p = sprintf("%08d",$p);
「8桁を超えることはできません」というコメントの解釈方法と、入力または出力のどちらを指すのかわかりません。出力を参照する場合は、文字列をクリップするための追加のsubstr()呼び出しが必要になります。
最初の8桁を切り取るには
$p = substr(sprintf('%08d', $p),0,8);
下8桁をクリップするには
$p = substr(sprintf('%08d', $p),-8,8);
入力番号が常に7桁または8桁の場合は、
$str = ($input < 10000000) ? 0 . $input : $input;
私はいくつかのテストを実行し、これはと同じ速さ倍増するまでになることを得ますstr_pad
かsprintf
。
入力の長さが任意である場合は、次を使用することもできます
$str = substr('00000000' . $input, -8);
これは他のものほど高速ではありませんが、またstr_pad
、sprintf
です。
ところで、私のテストでsprintf
は、str_pad
ます。すべてのテストはPHP 5.6で行いました。
編集:substr
バージョンはまだ非常に高速であるように見えますが(PHP 7.2)、入力がパディングしたい長さよりも長くなる場合があるため、バージョンも壊れています。たとえば、3桁にパディングして、入力に4がある場合substr('0000' . '1234', -3) = '234'
、最後の3桁になるだけです。
$
はちょうど修正しました)
この単純な関数を作成して、このフォーマットを作成しました:01:00:03
秒は常に表示されます(ゼロの場合でも)。ゼロより大きい場合、または数時間または数日が必要な場合は、分が表示されます。ゼロより大きい場合、または日数が必要な場合は、時間が表示されます。ゼロより大きい場合、日数が表示されます。
function formatSeconds($secs) {
$result = '';
$seconds = intval($secs) % 60;
$minutes = (intval($secs) / 60) % 60;
$hours = (intval($secs) / 3600) % 24;
$days = intval(intval($secs) / (3600*24));
if ($days > 0) {
$result = str_pad($days, 2, '0', STR_PAD_LEFT) . ':';
}
if(($hours > 0) || ($result!="")) {
$result .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
}
if (($minutes > 0) || ($result!="")) {
$result .= str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
}
//seconds aways shown
$result .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $result;
} //funct
例:
echo formatSeconds(15); //15
echo formatSeconds(100); //01:40
echo formatSeconds(10800); //03:00:00 (mins shown even if zero)
echo formatSeconds(10000000); //115:17:46:40
$no_of_digit = 10;
$number = 123;
$length = strlen((string)$number);
for($i = $length;$i<$no_of_digit;$i++)
{
$number = '0'.$number;
}
echo $number; /////// result 0000000123
function duration($time){
$hours = '';
$minutes = '00:';
$seconds = '00';
if($time >= 3600){
//0 - ~ hours
$hours = floor($time / 3600);
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 3600;
}
if($time >= 60){
//0 - 60 minute
$minutes = floor($time / 60);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 60;
}
if($time){
//0 - 60 second
$seconds = str_pad($time, 2, '0', STR_PAD_LEFT);
}
return $hours . $minutes . $seconds;
}
echo duration(59); // 00:59
echo duration(590); // 09:50
echo duration(5900); // 01:38:20