PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahlen mit fester Ziffernanzahl


sami
07.01.2002, 23:41
gleiche frage wie schon zu javascript (vll geht das ja wenigstens in php irgendwie):

kann ich irgendwie erzwingen, dass ne variable zahlen fester ziffernanzahl beinhaltet? (also z.b. bei 3 stellen, wenn da ne ´12´ drin wär, würde das zu ner ´012´)

oder zumindest eine funktion, die dies umwandeln kann?


btw, das ganze sollte nicht über string oder arrays gehen, weil da weiss ich schon, wie man es löst.


Codeq
08.01.2002, 00:01
teile die zahl durch 1000 und begrenze die nachkommastellen auf 3..

oder noch besser gib jeder stelle ein element in einem array als char ... und wandle die ascii werte wieder in zahlen um wenn du deren wahren wert brauchst..


hab aber kA obs sowas schon fertig gibt... glaub aber nicht...

sami
08.01.2002, 00:15
jo also ich habe beides schon getan, ich hab die einzelnen ziffern in nem array gespeichert und ich hab die zahl in nen string umgewandelt. funzt beides, ist aber beides ziemlich umständlich.

was ich damit bezwecken will:
ich will links z.b. zu ner bildersammlung durchnummeriert aufrufen (als pic01.gif, pic02.gif, ...)
zudem will ich bei den einzelnen bilder ein next und last link.
und ich will die 0 in den namen, weil sonst ists doof beim directory listing wenns mehr als 10 hat.

Bauchi
08.01.2002, 00:16
also in awk auf der shell wüsste ich wie´s geht.. aber php .. mhh glaub nicht ...

ich würdes mit ein paar string functions hinternander lösen .. . was anderes fällt mir auch ned ein .. :(

ubol
08.01.2002, 17:28
Ich hab das mal ein kleines Skript gebastelt, das genau das mit den Stellen macht. Also, hier die Grobstruktur:


$start = 0;
$end = 10;
$intervall = 1;
for($x=$start;$x<$end;$x+=$intervall)
{
$temp = &quot;0000&quot;.$x; // Ein paar Nullen vor dem Counter
$filename = &quot;file_&quot;.substr($temp,-4);
}


Was passiert:
In $temp wird der aktuelle counter ($x) an ein paar 0-en angehängt. Anschliessend werden nur die letzten vier Ziffern berücksichtig (substr).

Hope that helps!

cu Urs

sami
08.01.2002, 17:56
jop thx
ist zwar bisserl eleganter, als ich es gemacht habe.
aber trotzdem noch irgendwie ein gebastel.

eine eigentliche funktion dafür gibts offensichtlich ned :(

ubol
10.01.2002, 10:22
eine eigentliche funktion dafür gibts offensichtlich ned :(
Doch, aber nicht direkt (per substring):
$ausgabe = substr(&quot;0000&quot;.$eingabe, - $stellen);
d.h., wenn du immer auf 4 Stellen erweitern willst, lautet die Funktion entsprechend:
$ausgabe = substr(&quot;0000&quot;.$eingabe, -4);
cu Urs

MacGyver8472
11.01.2002, 17:43
Hi

ich glaub was du sucht ist das


$input = &quot;Alien&quot;;
str_pad ($input, 10); // Ergebnis &quot;Alien &quot;
str_pad ($input, 10, &quot;-=&quot;, STR_PAD_LEFT); // Ergebnis &quot;-=-=-Alien&quot;
str_pad ($input, 10, &quot;_&quot;, STR_PAD_BOTH); // Ergebnis &quot;__Alien___&quot;


also in deinem fall


str_pad($input, 3, &quot;0&quot;, STR_PAD_LEFT);


hoffe ich konnte helfen :P

sami
11.01.2002, 23:13
ja, das tönt sehr gut, thx

xZeLeRaToR
18.01.2002, 19:10
kan mir das ma jemand erklären!

ich würde es ja mit if abfragen probieren(das heisst das der die zahlen bei verschiedene fällen umwandelt

beispiel


if ($x < 10)
{
$x = &quot;0&quot;$x;
}




cu

x

MacGyver8472
19.01.2002, 01:45
wenn du die funktion meinst die ich gepostet habe hier der auszug aus der hilfe.

str_pad -- Erweitert einen String auf eine bestimmte Länge unter Verwendung eines anderen Strings
Beschreibung:

string str_pad (string input, int pad_length [, string pad_string [, int pad_type]])


Mit dieser Funktion erweitern sie den String input auf der linken, rechten oder beiden Seiten auf die mit dem optionalen Parameter pad_type angegebene Länge. Wird das optionale Argument pad_string nicht angegeben, erfolgt die Erweiterung mit Leerzeichen, ansonsten wird hierzu der Inhalt von pad_string verwendet.

Das optionale Argument pad_type kann STR_PAD_RIGHT, STR_PAD_LEFT oder STR_PAD_BOTH sein. Wird pad_type nicht angegeben, so wird per default von STR_PAD_RIGHT ausgegangen.

Ist der Wert von pad_length negativ oder kleiner als die Länge des Input-Strings, wird keine Erweiterung vorgenommen.

Bauchi
19.01.2002, 02:12
mhhh
wer c kennt, kennt sicher auf printf und sprintf

für deinen fall:

$test=sprintf(&quot;%03d&quot;,$variable);
echo &quot;$test&quot;;

-> gebe aus: einen intger als dezimal der 3 stellen lang ist und vor mit nullen aufgefüllt wird .. %03d muss man quasi rückwärts lesen *G*

und dann halt variable..
wenn die kürzer als 3 ist, werden automatisch 0er vorne dran gestellt .. :-)

KISS - Keep it small and simple

fyi:
http://www.php.net/manual/de/function.sprintf.php

Daidaloz
19.01.2002, 17:31
Genauso funktioniert es auch in Perl, nur noch etwas einfacher *G*

Bauchi
19.01.2002, 17:57
naja... wie gesagt ... standart c function ..
und perl und php sind nun mal stark c lastig *G*

:-D

Daidaloz
19.01.2002, 19:41
Original von Bauchi
naja... wie gesagt ... standart c function ..
und perl und php sind nun mal stark c lastig *G*

:-D



Genau das ist der Punkt :D