การจัดลำดับรางวัล 1 2 3 php

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การจัดลำดับรางวัล 1 2 3 php

การจัดลำดับรางวัล 1 2 3 php
กรณี คะแนนเท่ากัน ก้อได้ลำดับเดียวกัน ขอแนวทางการเขียนและคำแนะนำหน่อยครับผม


Suthon77 202.129.29.xxx 03-08-2016 12:56:33

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
  อย่างเช่น?


ninenik 180.183.50.xxx 03-08-2016
 ความคิดเห็นที่ 2

คะแนน $score[1]=50 ได้ที่ 1
คะแนน $score[2]=49 ได้ที่ 2
คะแนน $score[3]=49 ได้ที่ 2
คะแนน $score[4]=48 ได้ที่ 3
คะแนน $score[5]=58 ได้ที่ 3

ประมาณนี้ครับ



suthon77 202.129.29.xxx 03-08-2016 14:31
 ความคิดเห็นที่ 3
ลองเอาแนวทางการใช้งาน array ต่อไปนี้ไปประยุกต์ใช้งาน

<?php
// คะแนนะ
$p[1]=8;
$p[2]=9;
$p[3]=10;
$p[4]=9;
$p[5]=10;
$p[6]=7;
$p[7]=10;
$p[8]=6;
$p[9]=8;
$p[10]=5;
arsort($p);  // เรียงคะแนน
$i=0;  // ลำดับที่
$w=array();
$s=array();
// วนลูปกำหนดลำดับ
foreach($p as $k=>$v){
	if(!isset($w[$v])){  // ตรวจสอบลำดับของคะแนน
		$w[$v]=array(); // กำหนดให้มี array ของลำดับนี้แล้ว
		$i++; // เพิ่มลำดับ
		$s[$k]=$i; // กำหนดลำดับให้
	}else{
		$s[$k]=$i;// กำหนดลำดับให้
	}
	
}
?>
<pre>
<?php print_r($s); ?>
</pre>


ninenik 180.183.50.xxx 03-08-2016
 ความคิดเห็นที่ 4

พอจะได้แล้วครับ ติดนิดนึง ตรงที่ว่า ทศนิยม ไม่ได้เอามาคิด

เช่น 50.33 กับ 50.20 ได้ลำดับที่ 1 เหมือนกัน



suthon77 202.129.29.xxx 03-08-2016 15:12
 ความคิดเห็นที่ 5
ได้วิธีแก้แล้วครับ ตัดปัญหาเลขทศนิยม ใช้ round ไม่เอาเลขทศนิยม สุดยอดมากครับ ขอบคุณมาก


suthon77 202.129.29.xxx 03-08-2016 15:41
 ความคิดเห็นที่ 6
ถ้าจะให้เรียงลำดับ แบบข้ามที่ซ้ำกันครับ

คะแนน $score[5]=58 ได้ที่ 1
คะแนน $score[1]=50 ได้ที่ 2
คะแนน $score[2]=49 ได้ที่ 3
คะแนน $score[3]=49 ได้ที่ 3
คะแนน $score[4]=48 ได้ที่ 5
คะแนน $score[4]=47 ได้ที่ 6
คะแนน $score[4]=47 ได้ที่ 6
คะแนน $score[4]=47 ได้ที่ 6
คะแนน $score[4]=40 ได้ที่ 9
คะแนน $score[4]=38 ได้ที่ 10

จะแก้ ที่ตรงไหนครับ ให้บวกเพิ่มลักษณะนี้
ขอบคุณครับ



mongkong 223.207.250.xxx 20-06-2017 00:14
 ความคิดเห็นที่ 7
แล้วถ้า array ผมได้แบบนี้
    [1] => 43114|3.90
    [2] => 43696|3.90
    [3] => 43697|4.00
    [4] => 43698|4.00
    [5] => 43699|3.60
    [6] => 43700|2.92
    [7] => 43701|3.83
    [8] => 43702|3.19
    [9] => 43704|3.92
    [10] => 43705|3.51
ผมจะหาลำดับที่จาก   |x.xx        โดยที่ซ้ำกัน ให้เป็นลำดับเดียวกัน แล้วข้ามเลขซ้ำ มาเก็บเป็น array
    [3] => 43697|4.00 | 1
    [4] => 43698|4.00 | 1
    [9] => 43704|3.92 | 3
    [1] => 43114|3.90 | 4
    [2] => 43696|3.90 | 4
    [7] => 43701|3.83 | 6
    [5] => 43699|3.60 | 7
    [10] => 43705|3.51 | 8
    [8] => 43702|3.19 | 9
    [6] => 43700|2.92 | 10

ผมต้องเขียน code php อย่างไรบ้างครับ ขอคำแนะนำด้วย
ขอบคุณมากๆๆๆ


mongkong 61.19.22.xxx 20-06-2017 09:56
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ