ฟังก์ชัน usort

ฟังก์ชัน usort เรียงลำดับอาร์เรย์ ตามค่าขององค์ประกอบ โดยใช้ ฟังก์ชัน callback เพื่อกำหนดลำดับ ขององค์ประกอบในอาร์เรย์ที่เรียงแล้ว ฟังก์ชันนี้จะเปลี่ยนแปลงอาร์เรย์ต้นทางโดยตรง

ฟังก์ชันเปรียบเทียบ (callback) ต้องคืนค่า เป็นจำนวนเต็ม ซึ่งขึ้นอยู่กับ ผลการเปรียบเทียบ: น้อยกว่า, เท่ากับ หรือมากกว่าศูนย์

ไวยากรณ์

phpusort(array &$array, callable $callback): bool

ตัวอย่าง

ลองเรียงลำดับอาร์เรย์จากน้อยไปมาก ตามค่าขององค์ประกอบ:

php<?php
  $arr = [1, 3, 2, 5, 4];
  
  function func($a, $b)
  {
    if ($a === $b) {
      return 0;
    } else if ($a < $b) {
      return -1;
    } else {
      return 1;
    }
  }
  
  usort($arr, 'func');
  var_dump($arr);
?>

ผลลัพธ์การทำงานของโค้ด:

php[1, 2, 3, 4, 5]

ตัวอย่าง

คราวนี้ลองเรียงลำดับอาร์เรย์จากมากไปน้อย ตามค่าขององค์ประกอบ:

php<?php
  $arr = [1, 3, 2, 5, 4];
  
  function func($a, $b)
  {
    if ($a === $b) {
      return 0;
    } else if ($a > $b) {
      return -1;
    } else {
      return 1;
    }
  }
  
  usort($arr, 'func');
  var_dump($arr);
?>

ผลลัพธ์การทำงานของโค้ด:

php[1, 2, 3, 4, 5]

ตัวอย่าง

คราวนี้ลองเรียงลำดับอาร์เรย์จากน้อยไปมาก ตามจำนวนอักขระ ในแต่ละองค์ประกอบของอาร์เรย์:

php<?php
  $arr = [
    '123',
    '1',
    '12345',
    '12',
    '1234',
  ];
  
  function func($a, $b)
  {
    if (strlen($a) === strlen($b)) {
      return 0;
    } else if (strlen($a) < strlen($b)) {
      return -1;
    } else {
      return 1;
    }
  }
  
  usort($arr, 'func');
  var_dump($arr);
?>

ผลลัพธ์การทำงานของโค้ด:

php[
  '1',
  '12',
  '123',
  '1234',
  '12345',
]

ดูเพิ่มเติม

  • ฟังก์ชัน sort,
    ซึ่งเรียงลำดับจากน้อยไปมากตามค่าขององค์ประกอบ
  • ฟังก์ชัน rsort,
    ซึ่งเรียงลำดับจากมากไปน้อยตามค่าขององค์ประกอบ
  • ฟังก์ชัน ksort,
    ซึ่งเรียงลำดับจากน้อยไปมากตามคีย์
  • ฟังก์ชัน krsort,
    ซึ่งเรียงลำดับจากมากไปน้อยตามคีย์
  • ฟังก์ชัน asort,
    ซึ่งเรียงลำดับจากน้อยไปมากตามค่าขององค์ประกอบ โดยคงคีย์ไว้
  • ฟังก์ชัน arsort,
    ซึ่งเรียงลำดับจากมากไปน้อยตามค่าขององค์ประกอบ โดยคงคีย์ไว้
  • ฟังก์ชัน natsort,
    ซึ่งเรียงลำดับแบบ natural sort
  • ฟังก์ชัน natcasesort,
    ซึ่งเรียงลำดับแบบ natural sort โดยไม่สนใจตัวพิมพ์ใหญ่-เล็ก
  • ฟังก์ชัน usort,
    ซึ่งเรียงลำดับโดยใช้ฟังก์ชัน callback
  • ฟังก์ชัน uksort,
    ซึ่งเรียงลำดับโดยใช้ฟังก์ชัน callback กับคีย์
  • ฟังก์ชัน uasort,
    ซึ่งเรียงลำดับโดยใช้ฟังก์ชัน callback โดยคงคีย์ไว้
  • ฟังก์ชัน array_multisort,
    ซึ่งเรียงลำดับหลายอาร์เรย์พร้อมกัน