Pytanie Utwórz 4-cyfrową liczbę całkowitą z jednej, dwóch lub trzech liczb całkowitych w PHP


Robię połączenie z bazą danych, aby pobrać identyfikator konkretnego elementu. Zwykle są identyfikatory takie jak: 1, 2, 14, 23, .... Muszę pobrać identyfikator z DB i wypisać 4 cyfrowy numer.

Na przykład: Mój identyfikator wyniku to: 1. Teraz, kiedy mam tę wartość, chcę, żeby się stała 0001. Lub jeśli mój identyfikator wyniku to 13powinno się stać 0013itp.

Jak mogę to osiągnąć za pomocą php bez zmiany prawdziwego ID w bazie danych?


10
2017-08-13 10:02


pochodzenie




Odpowiedzi:


Chcesz zerofill Liczba całkowita.

Możesz to zrobić sprintf('%04u', $n) lub str_pad($n, 4, '0', STR_PAD_LEFT).


22
2017-08-13 10:06



Czy jest jakaś różnica w korzystaniu z jednego lub drugiego? Jestem na PHP5 i pierwszy nie działa. - aspirinemaga
@aspirinemaga: Prawdopodobnie wtedy robisz coś nie tak (patrz codepad.org/nzEgZ9nP). Odnośnie różnicy, oboje robią to samo - sprintf pochodzi z C świat ale str_pad jest potężniejszy, ponieważ zapewnia lewe + prawe wypełnienie i nie musisz też martwić się o ucieczkę meta-znaków, takich jak %. Możesz też używać ciągów dłuższych niż 1 znak (nie jestem pewien, czy możesz zrobić to samo z sprintf). - Alix Axel
Dziękuję bardzo za twój komentarz. Zajmie się lepiej moim kodem, ponieważ po prostu nie będzie działać sprintf() - aspirinemaga
Och, przepraszam, oczywiście, że to nie zadziałało, zastąpiłem echo z sprintf, myślałem sprintf jest taki sam jak echo ale z innymi funkcjami. - aspirinemaga
@aspirinemaga: No =) do tego możesz użyć printf, który jest taki sam jak print ale z magią zastępczą. - Alix Axel


Tak jak zawsze.

sprintf("%04d", $num)

9
2017-08-13 10:04



to nie działa, po prostu nie wyświetli niczego, nawet błędu, tylko puste pole. Czy używam go poprawnie? <?php sprintf("%04d", $item->id);?> - aspirinemaga
$modified_id = sprintf("%04d", $item->id); - Tim
@aspirinemaga: Zwraca tylko ciąg znaków. Odpowiadasz za wyprowadzenie go. - Ignacio Vazquez-Abrams


Chcesz PHP strpad funkcjonować:

<?php
$input = 1;
echo str_pad($input, 4, "0", STR_PAD_LEFT);  // produces "0001"
?>

2
2017-08-13 10:03





Jeśli chcesz to zrobić wewnątrz kwerendy MySQL, oto jest

SELECT LPAD(id, 4, '0') as modified_id FROM table;

2
2017-08-13 10:12



tak, i jakąkolwiek różnicę wydajności między używaniem metod PHP i MySQL? - aspirinemaga