স্ট্রিংয়ে শূন্য-প্যাড অঙ্কগুলি


125

আমার একক পরিসংখ্যান (1 থেকে 9) থেকে (01 থেকে 09) কাস্ট করা দরকার। আমি কোনও উপায় সম্পর্কে ভাবতে পারি তবে এটির বড় এবং কদর্য এবং জটিল। আমি নিশ্চিত যে এখানে কিছু সংক্ষিপ্ত পথ থাকতে হবে। কোনও পরামর্শ

উত্তর:


214

প্রথমত, আপনার বিবরণ বিভ্রান্তিকর। Doubleএকটি ভাসমান পয়েন্ট ডেটা টাইপ। আপনি সম্ভবত স্ট্রিংয়ে শীর্ষস্থানীয় শূন্যগুলির সাথে আপনার অঙ্কগুলি প্যাড করতে চান। নিম্নলিখিত কোডটি তা করে:

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

আরও তথ্যের জন্য, এর ডকুমেন্টেশন পড়ুন sprintf


@ কনরাড রুডল্ফ যদি আমার তত্ক্ষণিত digitত্রুটি হিসাবে পূর্ণসংখ্যার মান হিসাবে পাস হয় , যদি সেই সময়ের স্ট্রিং হিসাবে পাস হয় তবে সমস্যা নেই
হিরেন ভুট

@ হিরেনভূট নং। আমি 100% নিশ্চিত যে এটি কাজ করে। ডকুমেন্টেশন তাই বলে। এমনকি আমি এটি কেবল আপনার জন্যও পরীক্ষা করেছি: gist.github.com/klmr/e1319f6d921a382e86296cce06eb7dbd
কনরাড রুডলফ

@ কনরাড রুডল্ফ দয়া করে এই কোডটি দেখুন gist.github.com/klmr/…
হিরেন ভুট

3
@ হিরেনভূট আচ্ছা এটি সম্পূর্ণ আলাদা, এর কিছুই করার নেইsprintfপূর্ণসংখ্যার বিন্যাসটি পরীক্ষা করুন , বিশেষ করে অষ্টাল সংখ্যাগুলির বিভাগটি।
কনরাড রুডল্ফ

@ কনরাডরুডল্ফ হ্যাঁ, কোনও সম্ভাব্য সমাধান হতে পারে?
হিরেন ভুট

89

এছাড়াও আছে str_pad

<?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_"
?>

67

Str_pad ব্যবহার করে সমাধান :

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

পিএইচপি 5.3 এ বেঞ্চমার্ক

আরআর_প্যাডের ফলাফল: 0.286863088608

ফলাফল স্প্রিন্টফ: 0.234171152115

কোড:

$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";

0

str_padভারী কার্য সম্পাদন প্যাডিংয়ের দৈর্ঘ্যের উপর নির্ভর করে। আরও ধারাবাহিক গতির জন্য আপনি str_repeat ব্যবহার করতে পারেন ।

$padded_string = str_repeat("0", $length-strlen($number)) . $number;

আরও ভাল পারফরম্যান্সের জন্য সংখ্যার স্ট্রিং মান ব্যবহার করুন।

$number = strval(123);

পিএইচপি 7.4 এ পরীক্ষিত

str_repeat: 0.086055040359497   (number: 123, padding: 1)
str_repeat: 0.085798978805542   (number: 123, padding: 3)
str_repeat: 0.085641145706177   (number: 123, padding: 10)
str_repeat: 0.091305017471313   (number: 123, padding: 100)

str_pad:    0.086184978485107   (number: 123, padding: 1)
str_pad:    0.096981048583984   (number: 123, padding: 3)
str_pad:    0.14874792098999    (number: 123, padding: 10)
str_pad:    0.85979700088501    (number: 123, padding: 100)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.