|
|
|
สอบถามเรื่องการ ตัด จํานวนเลข เช่น 10,000 ให้เป้น 10K เหมือนในเฟสบุ๊ค facebbok ที่เอาไว้นับจํานวน |
|
|
|
|
|
|
|
Code (PHP)
<?
$num=100000;
$str=number_format($num,0,'.',','); //แปลงค่าตัวเลขเป็นstr
$explode=explode(',',$str); // ตัดค่า , จะได้เป็น array
$count=count($explode); //นับจำนวน array ถ้าเป็นหลัก 100,000 จะได้ array 2 หลัก คือ 100 และ 000
if($count == 2){ //คำนวน count ถ้าในนั้น มี array 2 หลัก
echo $explode[0]."K";
}else if($count == 3){ //คำนวน count ถ้าในนั้น มี array 3 หลัก
echo $explode[0]."M";
}
?>
|
ประวัติการแก้ไข 2013-03-01 09:52:21 2013-03-01 09:53:02
|
|
|
|
Date :
2013-03-01 09:49:07 |
By :
Ex-[S]i[L]e[N]t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้ามีคนชม 1 คน คือเลขหลักเดียวมันจะไม่แสดงข้อมูล
Code (PHP)
$num=$result['vdo_count'];
$str=number_format($num,0,'.',','); //แปลงค่าตัวเลขเป็นstr
$explode=explode(',',$str); // ตัดค่า , จะได้เป็น array
$count=count($explode); //นับจำนวน array ถ้าเป็นหลัก 100,000 จะได้ array 2 หลัก คือ 100 และ 000
if($count == 2){ //คำนวน count ถ้าในนั้น มี array 2 หลัก
$vdo_count_string = $explode[0]."K";
}else if($count == 3){ //คำนวน count ถ้าในนั้น มี array 3 หลัก
$vdo_count_string = $explode[0]."M";
}
|
|
|
|
|
Date :
2013-03-01 11:24:34 |
By :
kenghockey |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
$num=10;
$len=strlen($num); // นับจำนวนตัวแปร เริ่มต้นที่ 1
if($len < 4){
echo $num;
}else{
$str=number_format($num,0,'.',','); //แปลงค่าตัวเลขเป็นstr
$explode=explode(',',$str); // ตัดค่า , จะได้เป็น array
$count=count($explode); //นับจำนวน array ถ้าเป็นหลัก 100,000 จะได้ array 2 หลัก คือ 100 และ 000
if($count == 2){ //คำนวน count ถ้าในนั้น มี array 2 หลัก
echo $vdo_count_string = $explode[0]."K";
}else if($count == 3){ //คำนวน count ถ้าในนั้น มี array 3 หลัก
echo $vdo_count_string = $explode[0]."M";
}
}
?>
|
|
|
|
|
Date :
2013-03-01 11:46:21 |
By :
Ex-[S]i[L]e[N]t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำมาให้อีกทางเลือกครับ :D
เป็นแบบ universal เลยนะครับ เผื่อเอาไปใช้งานอื่นได้ด้วย
ถ้าเป็น string มันจะ return 0 นะครับ
Code (PHP)
function SI_prefix($num){
if(is_numeric($num)){
$negative = '';
if($num < 0){
$negative = '-';
$num = abs($num);
}
if($num < 1000){
return (int) ($negative.$num);
}else{
$prefix = array('k','M','G','T','P','E');
$temp = split(',',number_format($num));
return $negative.$temp[0].' '.$prefix[count($temp)-2];
}
}else{
return 0;
}
}
|
|
|
|
|
Date :
2013-03-01 11:58:01 |
By :
earthchie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2013-03-01 12:45:35 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ชอบๆ เลยจะขอช่วยอธิบายโค้ดครับ
function SI_prefix($num){
if(is_numeric($num)){ // ถ้า $num เป็นตัวเลข หรือเป็นสตริงที่สามารถแปลงเป็นตัวเลขได้
$negative = ''; // สัญลักษณ์ติดลบ ให้เริ่มแรกคือ ไม่มี (สตริงว่าง)
if($num < 0){ // หาก $num น้อยกว่า 0
$negative = '-'; // ให้แสดงสัญลักษณ์ติดลบ
$num = abs($num); // และทำให้ $num เป็นจำนวนสัมบูรณ์ (จำนวนบวก)
}
if($num < 1000){ // หาก $num น้อยกว่า 1000 ให้คืนค่ากลับไปเลย ไม่ต้องคำนวณอะไรอีก
return (int) ($negative.$num); // เชื่อมต่อ $negative ที่แสดงเครืองหมายติดลบ และ $num ที่เป็นจำนวน เข้าด้วยกันด้วย .
// โดยแปลงเป็นชนิด int (คือจะไม่มีจุดทศนิยมแน่นอน) ก่อน return
}else{ // หากมากกว่านั้น
$prefix = array('k','M','G','T','P','E'); // ตารางของ SI prefix
// หลักการคือ ทำให้ $num อยู่ในรูปแบบมี comma คั่นด้วย number_format()
// เช่น 100000 ก็จะได้ 100,000
// หลังจากนั้นก็จะส่งต่อมาที่ split() เพื่อแยกส่วนต่างๆ ออกจากกันด้วย comma
// เช่น 100,000 ก็จะได้ array ที่มีสมาชิก 2 ตัวคือ 100 ตามด้วย 000 และให้เป็นค่าแก่ตัวแปร $temp
$temp = split(',', number_format($num) );
// หลังจากนั้นก็จะเอาสมาชิกตัวที่ 1 ของ $temp ซึ่งก็คือ 100 อ้างถึงด้วย $temp[0] มาเป็นตัวหลัก
// และหา "จำนวนสมาชิกใน $temp" ด้วย count($temp)
// และลบด้วย 2 เพื่อที่จะให้ได้ index ที่เริ่มจาก 0 เพื่อไปเข้าถึงสมาชิกใน $prefix ว่าจะใช้ตัวอักษรใด (k, M, G etc.)
// และเชื่อมต่อส่วนต่างๆ ทั้งหมดด้วย .
return $negative.$temp[0].' '.$prefix[count($temp)-2];
}
}else{ // แต่ถ้าหาก $num เป็นชนิดข้อมูลอื่นที่ไม่สามารถแปลงเป็นตัวเลขได้
return 0; // คืน 0 กลับไป
}
}
|
|
|
|
|
Date :
2013-03-02 07:23:02 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|