เอาค่าคะแนนมาเรียงลำดับ กรณีคะแนนเท่ากัน ได้อันดับเท่ากัน คะแนนรองมานับอันดับต่อจากอันดับก่อนหน้า
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา เอาค่าคะแนนมาเรียงลำดับ กรณีคะแนนเท่ากัน ได้อันดับเท่ากัน คะแนนรองมานับอันดับต่อจากอันดับก่อนหน้า
เอาค่าคะแนนมาเรียงลำดับ กรณีคะแนนเท่ากัน ได้อันดับเท่ากัน คะแนนรองมานับอันดับต่อจากอันดับก่อนหน้า
รวมคะแนนของแต่ละคนได้แล้ว และเรียงอันดับจากคะแนนสูงสุด-น้อยสุด ปรากฏว่าอันดับที่ 1 มีคนได้คะแนน 50 ทั้งหมด 3 คน ขอถามว่า
1. คนที่ได้คะแนน 50 คะแนนเท่ากัน อยากให้แสดงเป็นอันดับ 1 ทั้ง 3 คน
2. คนที่ได้ลำดับถัดมาให้ แสดงอันดับที่ นับต่อจากจำนวนคนที่ได้อันดับ เท่ากันก่อนหน้า เช่น
คะแนน 25 ได้อันดับ 4
คะแนน 15 ได้อันดับ 5
-------------------------------
หรือถ้า ได้คะแนน 50 คะแนน 2 อันดับแรก ลำดับจะเรียงแบบนี้
ลำดับที่ ชื่อผู้สมัคร หมายเลข ได้คะแนน
1 ผู้สมัครคนที่ 1 1 50
1 ผู้สมัครคนที่ 2 3 50
3 ผู้สมัครคนที่ 3 5 48
4 ผู้สมัครคนที่ 4 2 25
5 ผู้สมัครคนที่ 5 4 15
ขอแนวทางหน่อยครับ ว่าจะเช็คค่าคะแนนอย่างไรกับค่าอันดับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ดูตัวอย่างนี้เป็นแนวทาง
แบบที่ 1
1 2 3 4 5 6 7 8 9 10 11 12 | $scores = array (50,50,50,25,15); $no = 0; // นับลำดับ $chk_score = null; // เก็บคะนแนน และตรวจสอบ foreach ( $scores as $score ){ // ถ้ายังไม่ได้เก็บคะแนน หรือ คะแนนที่ตรวจสอบไม่เท่ากับคะแนนเดิม ให้นับเพิ่ม if ( is_null ( $chk_score ) || $chk_score != $score ){ $chk_score = $score ; $no ++; } echo $no . "\r\n" ; } |
ลำดับจะเป็น 1 1 1 2 3
แบบที่ 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $scores = array (50,50,50,25,15); $no = 0; // นับลำดับ $no_real = 0; $no_show = 0; // ลำดับที่จะแสดง $chk_score = null; // เก็บคะนแนน และตรวจสอบ foreach ( $scores as $score ){ $no_real ++; // ลำดับจริงที่เพิ่มตลอด // ถ้ายังไม่ได้เก็บคะแนน หรือ คะแนนที่ตรวจสอบไม่เท่ากับคะแนนเดิม ให้นับเพิ่ม if ( is_null ( $chk_score ) || $chk_score != $score ){ $chk_score = $score ; $no ++; $no_show = $no_real ; } else { $no_show = $no ; } echo $no_show . "\r\n" ; } |
ลำดับจะเป็น 1 1 1 4 5

ความคิดเห็นที่
2
ขอบคุณมากครับ

ขอบคุณทุกการสนับสนุน
![]()