[PHP] hoe eenvoudig naar 3 cijferig converteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • rob3rt
  • Registratie: Maart 2009
  • Laatst online: 16-09 22:26
Ik zoek een manier om een getal weer te geven als 3 cijferig getal,
Ik haal een waarde uit de database, bv 4
Dan is de bedoeling dat dit automatisch 004 wordt, is het bv 18 zou dit 018 moeten worden.
Het zijn altijd "hele getallen" 1,2,3,4,5 t/m 999 wat uit de database komt, nooit 2,8 of zoiets

Is er een bestaande PHP functie wat dit eenvoudig kan doen?
Met round en ceil gaat dit helaas niet.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
http://us2.php.net/manual/en/function.str-pad.php :?
PHP:
1
echo str_pad($number, 3, "0", STR_PAD_LEFT);

Zoiets...als ik de manual mag geloven :Y)

En neem meteen even een kijkje in onze Quickstart; we verwachten hier wel (te zien) wat je o.a. zelf al hebt geprobeerd, gezocht, gevonden, wat er niet werkt en waarom je denkt van niet etc.

Zelfs al ken je de str_pad functie niet; een eigen implementatie is ook in een paar regels code te schrijven. Het helpt ook als je de juiste term(en) kent; ik weet geen kont van PHP maar Googlen op "pad string php" was al voldoende...

edit:

Ah; zo te zien hieronder zijn er zelfs wellicht nog betere alternatieven, hoewel number_format volgens de docs daar niet voor geschikt is...

[ Voor 116% gewijzigd door RobIII op 06-07-2009 01:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je gezocht? Hiervoor zijn meer dan genoeg functies.

(s)printf
number_format

en nog wel meer.

[ Voor 7% gewijzigd door Verwijderd op 06-07-2009 01:26 ]


Acties:
  • 0 Henk 'm!

  • N0stradamus
  • Registratie: April 2002
  • Laatst online: 19-07-2024
substr('00'.$X, -1, 3) misschien?

Als ik het echt allemaal van te voren wist...


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

N0stradamus schreef op maandag 06 juli 2009 @ 01:26:
substr('00'.$X, -1, 3) misschien?
Creatief, maar dan zou ik toch voor str_pad of sprintf kiezen. :+ number_format kan dit overigens niet voor elkaar krijgen voor zover ik weet.

[ Voor 15% gewijzigd door NMe op 06-07-2009 01:31 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NMe schreef op maandag 06 juli 2009 @ 01:30:
[...]

Creatief, maar dan zou ik toch voor str_pad of sprintf kiezen. :+
Toch is het wel een leuke; in classic ASP had ik eenzelfde truukje:

VBScript:
1
response.write right(string(3, "0") & mynumber, 3)
of generieker:
VBScript:
1
2
3
function padstringleft(value, padvalue, len)
    padstringleft = right(string(len, padvalue) & value, len)
end function

Zoiets. My point being; ook als er geen functies beschikbaar zijn zijn eigen implementaties van zoiets triviaals prima zelf te verzinnen. Uiteraard prefereer ik ook bestaande functies daarboven :+

[ Voor 5% gewijzigd door RobIII op 06-07-2009 01:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik kan ook een schroevendraaier gebruiken om een spijker in de muur te slaan als er toevallig geen hamer voor handen is, maar het liefst zou ik toch een hamer gebruiken als ik die keus heb. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 17-09 22:12

apNia

Schreeuwen en Nibbits eten!

Dat is wel iets wat ik kan beamen, vaak zijn er creatievere of qua regels code kortere oplossingen, maar readability is alles als later andere mensen (of jijzelf) met je code moeten gaan werken.

Dan zou ik altijd
code:
1
str_pad($number, 3, "0", STR_PAD_LEFT);

verkiezen boven
code:
1
substr('00'.$X, -1, 3)


Als je nou echt renderers ofzo aan het schrijven bent en heftig in cycles moet besparen dan is 't een ander verhaal :+

Acties:
  • 0 Henk 'm!

  • DrClaw
  • Registratie: November 2002
  • Laatst online: 21-08 21:39
PHP:
1
2
3
4
5
6
<?php 

$getal = 4;
echo sprintf( "%3d", $getal );

?>

Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Dit print een getal en gebruikt er minimaal 3 chars voor, je vergeet de voorloop 0 ;)
Maar dit is (zoals TRRoads ook al direct voorstelde) de makkelijkste manier IMHO

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • WiebeV
  • Registratie: Juni 2007
  • Laatst online: 15-09 12:05
Of
PHP:
1
2
3
4
<?php

$getal = 4;
echo str_repeat('0', 3 - strlen($getal)) . $getal;


Er zijn (nog) meer wegen naar rome :P

[ Voor 7% gewijzigd door WiebeV op 12-07-2009 04:13 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mja, zo kan ik er nog wel een paar verzinnen, maar eleganter dan str_pad en sprintf gaat het niet worden. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

DrClaw schreef op zondag 12 juli 2009 @ 02:23:
PHP:
1
2
3
4
5
6
<?php 

$getal = 4;
echo sprintf( "%3d", $getal );

?>
%03d dan. Voordeel hiervan is wel dat ie ook negatieve getallen goed kan handlen, maar daar zal de TS geen last van hebben :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1