PHP prepend wiodące zero przed liczbą jednocyfrową, on-the-fly
PHP - czy istnieje szybka metoda testowania pojedynczego ciągu znaków, a następnie poprzedzania wiodącego zera?
Przykład:
$year = 11;
$month = 4;
$stamp = $year.add_single_zero_if_needed($month); // Imaginary function
echo $stamp; // 1104
4 answers
Możesz użyć sprintf: http://php.net/manual/en/function.sprintf.php
<?php
$num = 4;
$num_padded = sprintf("%02d", $num);
echo $num_padded; // returns 04
?>
Doda zero tylko wtedy, gdy jest mniejsza niż wymagana liczba znaków.
Edit: jak zauważył @FelipeAls:
Podczas pracy z liczbami należy używać %d
(zamiast %s
), zwłaszcza gdy istnieje potencjał dla liczb ujemnych. Jeśli używasz tylko liczb dodatnich, każda z tych opcji działa dobrze.
Na przykład:
sprintf("%04s", 10);
zwroty 0010sprintf("%04s", -10);
zwraca 0-10
Gdzie jako:
sprintf("%04d", 10);
zwroty 0010sprintf("%04d", -10);
zwraca -010
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 09:53:19
Możesz użyć str_pad
do dodawania 0 ' s
str_pad($month, 2, '0', STR_PAD_LEFT);
string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 07:00:05
Uniwersalne narzędzie do formatowania łańcuchów, sprintf
:
$stamp = sprintf('%s%02s', $year, $month);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-14 05:50:40
Wygląda na to, że potrzeba wielu linii, żeby to zadziałało. Używam tego krótkiego if funkcjonalności i daje taki sam wynik jak OP chce.
$month = 8;
echo ($month < 10 ? '0'.$month : $month); // output: 08
I wyświetlenie poprawnego wyjścia zajmuje tylko 1 linię
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-08 14:01:16