PHP에서 선행 0으로 숫자 서식 지정
값이 포함 된 변수가 있습니다 1234567
.
정확히 8 자리를 포함하고 싶습니다 01234567
.
이를위한 PHP 함수가 있습니까?
사용 sprintf
:
sprintf('%08d', 1234567);
또는 다음을 사용할 수도 있습니다 str_pad
.
str_pad($value, 8, '0', STR_PAD_LEFT);
값이 $ value 인 경우 :
그것을 반향 시키려면 :
printf("%08d", $value);
그것을 얻기 위해:
$formatted_value = sprintf("%08d", $value);
그 트릭을해야합니다
echo str_pad("1234567", 8, '0', STR_PAD_LEFT);
1 대신 01이 필요할 때 다음이 나를 위해 일했습니다.
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
나는 당신이 무엇을하고 싶은지 잘 모르겠지만 아마도 sprintf 찾고 있습니다.
이것은 :
$value = sprintf( '%08d', 1234567 );
sprintf
당신이 필요한 것입니다.
위의 링크 된 페이지에서 EDIT ( 어떻게 downvotes에 의해 요청 됨 ) 샘플은 다음과 같습니다. "제로 패딩 정수":
<?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
and 보다 약간 빠릅니다 sprintf
.
BTW : 내 테스트도 그렇게 말한다면 sprintf
조금 더 빨리보다 str_pad
. PHP 5.6으로 모든 테스트를 수행했습니다.
이 간단한 함수를 작성하여 다음 형식을 생성했습니다. 01:00:03
초는 항상 표시됩니다 (0 인 경우에도). 0보다 크거나 시간 또는 일이 필요한 경우 분이 표시됩니다. 시간은 0보다 크거나 일이 필요한 경우에 표시됩니다. 일이 0보다 큰 경우 표시됩니다.
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
이것은 완벽하게 작동합니다.
$number = 13246;
echo sprintf( '%08d', $number );
$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
항상 유형 저글링을 남용 할 수 있습니다.
function zpad(int $value, int $pad): string {
return substr(1, $value + 10 ** $pad);
}
10 ** pad > INT_MAX
또는 이면 예상대로 작동하지 않습니다 value >= 10 * pad
.
문자열에 0 또는 다른 것을 추가 할 수 있다면. 처럼
public function saveHoliday($month)
{
return "0{$month}";
}
echo $this->saveHoliday(1); // 01
참고 URL : https://stackoverflow.com/questions/1699958/formatting-a-number-with-leading-zeros-in-php
'IT story' 카테고리의 다른 글
C # 목록 (0) | 2020.02.09 |
---|---|
대시를 제외한 문자열에서 영숫자가 아닌 문자를 모두 제거하려면 어떻게합니까? (0) | 2020.02.09 |
파일이 더 이상 존재하지 않으면 Windows 서비스를 어떻게 제거합니까? (0) | 2020.02.09 |
힘내 푸시 오류 : 저장소 데이터베이스에 개체를 추가 할 수있는 권한이 없습니다 (0) | 2020.02.09 |
모든 가지를 당기고 밀도록 git 설정 (0) | 2020.02.09 |