รู้จักกับ ฟังก์ชัน uksort() - ใช้เรียงตัวอักษรอาเรย์ตามที่เรากำหนด

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Patipat
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 761
ลงทะเบียนเมื่อ: 10/06/2019 10:12 am

รู้จักกับ ฟังก์ชัน uksort() - ใช้เรียงตัวอักษรอาเรย์ตามที่เรากำหนด

โพสต์โดย Patipat » 18/07/2019 3:42 pm

ในการเขียนโปรแกรม เราอาจจะหาผลลัพธ์ในการเรียงตัวแปร อย่างเช่น ฟังก์ชัน sort()จะเป็นฟังก์ชัน การเรียง value ในอาร์เรย์จากน้อยไปมาก และเปลี่ยน key ของ array เป็นตัวเลข ( เริ่มจาก 0 ) ด้วยฟังก์ชั่น sort() อย่างเช่น ถ้าเรามี ข้อมูล 4 อย่างได้แก่ Lemon, Orange, Banana, Apple และทำการใช้ฟังก์ชัน sort () ข้อมูลจะเรียงตามตัวอักษรโดยอัตโนมัติ และมีอีกตัวอย่างหนึ่ง asort();จะเป็นการเรียงค่า Value ของอาเรย์ แต่หากเราใช้ uksort() จะเป็นฟังก์ชันที่เรียงข้อมูลตามที่เรากำหนดได้ เรามาดูตัวอย่างกันเลย

โค้ดตัวอย่าง

โค้ด: เลือกทั้งหมด

<?php
function cmp
($a, $b)
{
    $a = preg_replace('@^(a|an|the) @', '', $a); //ตัวแปรที่กำหนดว่า ให้ขึ้นเรียงก่อน 
    $b = preg_replace('@^(a|an|the) @', '', $b); 
    return strcasecmp
($a, $b);
}

$a = array("a baaaaaaaab" => 1, "the aaaaaaaaac" => 2, "an baaaaaaaaa" => 3, "a baaaaaaaaa" => 4); //กำหนดค่าให้ข้อมูล

uksort($a, "cmp"); //เรียงตาม $a

foreach ($a as $key => $value) {
    echo "$key$value.<br>";
}
?>


ผลลัพธ์
เราจะสังเกตได้ว่า ตัวแปรที่ อยู่หลัง a จะเรียงตามกันมาเรื่อยๆ แล้วตัวหน้าก็จะเป็นหลักว่า ในเลข2 จะเห็นได้ว่า the มาก่อน แล้วต่อด้วย a เลยต้องขึ้นเรียงเป็นอันดับแรก และอันที่ 3 ก็ขึ้นด้วย the เหมือนกันแต่ว่า ตามด้วย ac เลยไม่ได้ขึ้นก่อน
Selection_999(287).png
Selection_999(287).png (8.63 KiB) เปิดดู 33 ครั้ง


อ้างอิง
1 https://www.w3resource.com/php/function-reference/uksort.php
2 https://www.php.net/manual/en/function.uksort.php
3 https://www.w3schools.com/php/func_array_uksort.asp
If you fall, let you stand. :)

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 11 และ บุคคลทั่วไป 0 ท่าน