আমার একটি ভেরিয়েবল রয়েছে যার মান রয়েছে 1234567
।
আমি এটিতে অবশ্যই 8 টি সংখ্যা রাখতে চাই 01234567
।
তার জন্য কি কোনও পিএইচপি ফাংশন আছে?
আমার একটি ভেরিয়েবল রয়েছে যার মান রয়েছে 1234567
।
আমি এটিতে অবশ্যই 8 টি সংখ্যা রাখতে চাই 01234567
।
তার জন্য কি কোনও পিএইচপি ফাংশন আছে?
উত্তর:
ব্যবহার sprintf
:
sprintf('%08d', 1234567);
বিকল্পভাবে আপনি এটি ব্যবহার করতে পারেন str_pad
:
str_pad($value, 8, '0', STR_PAD_LEFT);
sprintf('%+03d:00 UTC',$i)
যেখানে $i
-12 থেকে 12 হয় তা যুক্ত করতে চেয়েছিলেন , প্রয়োজন অনুযায়ী + বা - প্রিন্ট করবে এবং 2 সংখ্যারও কম সংখ্যার জন্য নেতৃস্থানীয় শূন্যগুলিও স্থাপন করবে। SELECT
এইচটিএমএলে একটি সময় অঞ্চল তৈরি করার জন্য দুর্দান্ত ।
sprintf
( 3v4l.org/junvv/perf#output ) চেয়ে একটি সামান্য বিট দ্রুততর str_pad
( 3v4l.org/cliNP/perf#output )
প্রদত্ত মানটি $ মানের মধ্যে রয়েছে:
এটি প্রতিধ্বনিত করতে:
printf("%08d", $value);
এটা পেতে:
$formatted_value = sprintf("%08d", $value);
কৌতুক করা উচিত
যখন আমার 1 এর পরিবর্তে 01 প্রয়োজন, নিম্নলিখিতগুলি আমার পক্ষে কাজ করেছে:
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
যদিও আমি সত্যিই নিশ্চিত নই আপনি কী করতে চান আপনি সম্ভবত স্প্রিন্টফ খুঁজছেন ।
এই হবে:
$value = sprintf( '%08d', 1234567 );
sprintf
আপনার যা প্রয়োজন তা হল
উপরের লিঙ্ক করা পৃষ্ঠা থেকে সম্পাদনা করুন ( ডাউনভোটদের দ্বারা কোনওভাবে অনুরোধ করা হয়েছে ) এখানে একটি শূন্য-প্যাডযুক্ত পূর্ণসংখ্যার নমুনা দেওয়া হয়েছে:
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
সহজ উত্তর
$p = 1234567;
$p = sprintf("%08d",$p);
"এটি কখনই 8 টির বেশি হবে না" এবং যদি এটি ইনপুট বা আউটপুটটির উল্লেখ করে তবে কীভাবে মন্তব্যটির ব্যাখ্যা করবেন তা নিশ্চিত নই। যদি এটি আউটপুটকে নির্দেশ করে তবে আপনার স্ট্রিংটি ক্লিপ করতে একটি অতিরিক্ত সাবস্ট্রাস্ট () কল করতে হবে।
প্রথম 8 টি সংখ্যা ক্লিপ করতে
$p = substr(sprintf('%08d', $p),0,8);
শেষ 8 সংখ্যা ক্লিপ করতে
$p = substr(sprintf('%08d', $p),-8,8);
যদি ইনপুট সংখ্যায় সর্বদা 7 বা 8 সংখ্যা থাকে তবে আপনি এটি ব্যবহার করতে পারেন
$str = ($input < 10000000) ? 0 . $input : $input;
আমি কিছু পরীক্ষার দৌড়ে এবং যে এই হিসাবে হিসাবে দ্রুত দ্বিগুণ পর্যন্ত হবে পেতে str_pad
বা sprintf
।
যদি ইনপুটটির কোনও দৈর্ঘ্য থাকতে পারে তবে আপনি এটিও ব্যবহার করতে পারেন
$str = substr('00000000' . $input, -8);
এই হিসাবে দ্রুত অন্যান্য এক হিসাবে নয়, বরং একটি সামান্য বিট তুলনায় দ্রুততর হওয়া উচিত str_pad
এবং sprintf
।
বিটিডব্লিউ: আমার পরীক্ষাটিও বলেছে যে এটির sprintf
চেয়ে একটু দ্রুত str_pad
। আমি পিএইচপি 5.6 দিয়ে সমস্ত পরীক্ষা করেছি।
সম্পাদনা: Altough substr
সংস্করণ এখনও খুব দ্রুত (পিএইচপি 7.2), এটি ক্ষেত্রে নষ্ট হয়ে গেছে মনে করা হয় আপনার ইনপুট দৈর্ঘ্য আপনাকে প্যাড করতে চান চেয়ে দীর্ঘতর হতে পারে। উদাহরণস্বরূপ আপনি 3 টি সংখ্যায় প্যাড করতে চান এবং আপনার ইনপুটটির 4 টির চেয়ে বেশি substr('0000' . '1234', -3) = '234'
কেবল শেষ 3 টি সংখ্যার ফলাফল হবে
$
আমি ঠিক স্থির করেছি)
এই ফর্ম্যাটটি তৈরি করতে আমি এই সাধারণ ফাংশনটি লিখেছিলাম: 01:00:03
সেকেন্ড সর্বদা প্রদর্শিত হয় (শূন্য হলেও)। শূন্যের চেয়ে বেশি বা ঘন্টা বা দিন প্রয়োজন হলে মিনিটগুলি প্রদর্শিত হয়। শূন্যের চেয়ে বেশি বা দিনের প্রয়োজন হলে ঘন্টা দেখানো হয়। শূন্যের চেয়ে বেশি হলে দিনগুলি প্রদর্শিত হয়।
function formatSeconds($secs) {
$result = '';
$seconds = intval($secs) % 60;
$minutes = (intval($secs) / 60) % 60;
$hours = (intval($secs) / 3600) % 24;
$days = intval(intval($secs) / (3600*24));
if ($days > 0) {
$result = str_pad($days, 2, '0', STR_PAD_LEFT) . ':';
}
if(($hours > 0) || ($result!="")) {
$result .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
}
if (($minutes > 0) || ($result!="")) {
$result .= str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
}
//seconds aways shown
$result .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $result;
} //funct
উদাহরণ:
echo formatSeconds(15); //15
echo formatSeconds(100); //01:40
echo formatSeconds(10800); //03:00:00 (mins shown even if zero)
echo formatSeconds(10000000); //115:17:46:40
$no_of_digit = 10;
$number = 123;
$length = strlen((string)$number);
for($i = $length;$i<$no_of_digit;$i++)
{
$number = '0'.$number;
}
echo $number; /////// result 0000000123
এটি নিখুঁতভাবে কাজ করে:
$number = 13246;
echo sprintf( '%08d', $number );
function duration($time){
$hours = '';
$minutes = '00:';
$seconds = '00';
if($time >= 3600){
//0 - ~ hours
$hours = floor($time / 3600);
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 3600;
}
if($time >= 60){
//0 - 60 minute
$minutes = floor($time / 60);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 60;
}
if($time){
//0 - 60 second
$seconds = str_pad($time, 2, '0', STR_PAD_LEFT);
}
return $hours . $minutes . $seconds;
}
echo duration(59); // 00:59
echo duration(590); // 09:50
echo duration(5900); // 01:38:20