Dizesinde sıfır-pad basamaklı

3 Cevap php

Ben (01-09) tek rakamları (1-9) döküm gerekir. Ben bir yol düşünüyorum ama onun büyük ve çirkin ve hantal. Olabilir Bazı kısa yolu olmalı eminim. Herhangi Öneriler

3 Cevap

Her şeyden önce, sizin açıklama yanıltıcıdır. Double kayan noktalı veri türüdür. Sen muhtemelen bir dize önlerine ile ped basamak istiyorum. Aşağıdaki kod yapar:

$s = sprintf("%02d", $digit);

Daha fazla bilgi için, sprintf belgelerine bakın.

str_pad Orada da

<?php
$input = "Alien";
echo str_pad($input, 10);                      // produces "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // produces "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // produces "__Alien___"
echo str_pad($input, 6 , "___");               // produces "Alien_"
?>

Kullanılarak çözeltisi str_pad,

str_pad($digit,2,'0',STR_PAD_LEFT);

Php 5.3 Benchmark

Sonuç str_pad: ,286863088608

Sonuç sprintf: ,234171152115

Kod:

$start = microtime(true);
for ($i=0;$i<100000;$i++) {
    str_pad(9,2,'0',STR_PAD_LEFT);
    str_pad(15,2,'0',STR_PAD_LEFT);
    str_pad(100,2,'0',STR_PAD_LEFT);
}
$end = microtime(true);
echo "Result str_pad : ",($end-$start),"\n";

$start = microtime(true);
for ($i=0;$i<100000;$i++) {
    sprintf("%02d", 9);
    sprintf("%02d", 15);
    sprintf("%02d", 100);
}
$end = microtime(true);
echo "Result sprintf : ",($end-$start),"\n";