Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Akis_gr49
Δημοσιεύσεις: 266
Εγγραφή: 07 Ιουν 2007 13:49

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από Akis_gr49 » 01 Ιουν 2008 19:13

Παιδιά καλησπέρα,

Στο παρακάτω script έχω ένα drop down με τα εξής 1,2,3,4,5,6,7,...31
Μπορώ να τα εμφανίζω έτσι 01,02,03,04,05,06,07,08,09,10,11,12,...31

Κώδικας: Επιλογή όλων

<select name="day">
<option value="">Day</option>
<?php 
for &#40;$d=1; $d<=31; $d++&#41;&#123;
echo "<option value=\"$d\">$d</option>\n";
&#125; ?>
</select>

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από dik_ » 01 Ιουν 2008 20:15

Κώδικας: Επιλογή όλων

echo "<option value=\"$d\">".&#40;$d<10?"0".$d&#58;$d&#41;."</option>\n"; 

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από Rapid-eraser » 01 Ιουν 2008 21:58

Υπάρχει και κάτι ακόμα πιο γρήγορο.

Κώδικας: Επιλογή όλων

<select name="day">
<option value="">Day</option>
<?
for &#40;$d=1; $d<=31; $d++&#41;&#123;
?><option value="<?=$d;?>"><?=str_pad&#40;$d, 2, "0", STR_PAD_LEFT&#41;;?></option>
<? &#125; ?>
</select>
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από cherouvim » 01 Ιουν 2008 22:53

Πιο γρήγορο ένα function call με οποιαδήποτε υλοποίηση μέσα, από ένα απλό if statement;

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από soteres2002 » 02 Ιουν 2008 05:13

Υπάρχει και η εξής λύση μέσω της συνάρτησης sprintf() με κωδικό μορφοποίησης %02d:

Κώδικας: Επιλογή όλων

<?php
printf&#40;"Number with 0 prefix&#58; %s", sprintf&#40;"%02d", 9&#41;&#41;;
?>
Μέσα στο printf() ο μορφοποιητής για τον ακέραιο πρέπει να είναι string (δηλαδή %d) γιατί με μορφοποιητή %d ή %i θα μετατρέψει τον ακέραιο με πρόθεμα 0 πίσω στην κανονική του μορφή (που εσύ δεν θες να είναι έτσι).

Διάβασε περισσότερα για τις επιλογές της sprintf() στο http://www.php.net/sprintf.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από Rapid-eraser » 02 Ιουν 2008 14:51

Στην 4.4.1 είναι 0.8 χιλιοστά πιο γρήγορο το if + concat από το str_pad.
Στην 5.2.6 είναι τούμπαλιν (περίπου 0.3 χιλιοστά πιο γρήγορο το str_pad) ...

τα συμπεράσματα δικά σας
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από cherouvim » 02 Ιουν 2008 15:09

Πως το μέτρησες;

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από soteres2002 » 02 Ιουν 2008 21:56

XDebug!!

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μηδέν μπροστά από δεκαδικό ψηφίο, π.χ. 01, 02, 03 κτλ

Δημοσίευση από cherouvim » 04 Ιουν 2008 00:05

Δυστυχώς δεν υπάρχουν συμπεράσματα.

Οι χρόνοι που έδωσες δεν έχουν context.
Χιλιοστά από τι;
Πόσες εκτελέσεις;
"Ζέσταμα" έκανες;
Και πως μέτρησες;

Τα micro benchmarkings τέτοιου επιπέδου είναι πολύ δύσκολη υπόθεση.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες