PHP: PHP Hypertext Preprocessor

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
Array
1. สำรวจ Array
2. การทำงานซ้ำรอบ กับหน่วยข้อมูลใน Array
3. Array หลายมิติ
4. ปฏิบัติการบน Array
5. ปฏิบัติการอื่นบน Array
 
PHP เบื้องต้น
1. เริ่มต้นด้วย PHP
2. ภาษา PHP
3. การทำงานไฟล์ และไดเรคทอรี
4. การทำงานกับ Array
5. การควบคุมข้อความ และนิพจน์ปกติี่
6. คำสั่งใช้ใหม่และฟังก์ชัน
7. Object Oriented Programming
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP เบื้องต้น > การทำงานกับ Array

ปฏิบัติการบน Array

ปฏิบัติการพื้นฐานบน array เช่น การเรียงลำดับ การรวม และการใช้ฟังก์ชันภายในของ PHP ได้รับการกล่าวถึงต่อไปนี้ ในการทำงานเหล่านี้มีการใช้ array เป็นพารามิเตอร์และปรับปรุงเนื้อหาภายใน array ฟังก์ชันภายในยกเว้นกฎข้อนี้ โดยการใช้ & operator เพื่อส่งผ่านพารามิเตอร์ด้วยการอ้างอิง

การเรียงลำดับ

เนื่องจาก PHP เก็บข้อมูลตามการเพิ่ม จึงมีโอกาสที่ต้องการเรียงลำดับใหม่ สำหรับงานนี้มีหลายฟังก์ชัน แต่ที่ตรงมากคือ ฟังก์ชัน sort ที่ปรับปรุง array ตามเนื้อหา

<?php

$getRandom = array(15, 12, 20, 14, 9, 3);
var_dump($getRandom);
echo "<br/>\n";

sort($getRandom);
var_dump($getRandom);

?>

สคริปต์ข้างบนให้ผลลัพธ์ดังนี้
array(6) { [0]=> int(15) [1]=> int(12) [2]=> int(20) [3]=> int(14) [4]=> int(9) [5]=> int(3) }
array(6) { [0]=> int(3) [1]=> int(9) [2]=> int(12) [3]=> int(14) [4]=> int(15) [5]=> int(20) }

จากผลลัพธ์นี้พบว่า ค่าได้รับการเรียงลำดับ ส่วนคีย์เดิมของค่าหายไปและมีการกำหนดให้ใหม่ อนุพันธ์ของฟังก์ชัน sort คือ asort ทำการเรียงเฉพาะค่าและรักษาคีย์ไว้

การเรียงลำดับข้อความ

การเรียงลำดับข้อความทำได้ง่าย

<?php

$softdrinks = array("Coke", "Pepsi", "Fanta", "Sprite", " Green Spot", "Seven Up");
print_r($softdrinks);

sort($softdrinks);
echo "<br/>\n";
print_r($softdrinks);

?>

ผลลัพธ์คือ
Array ( [0] => Coke [1] => Pepsi [2] => Fanta [3] => Sprite [4] => Green Spot [5] => Seven Up )
Array ( [0] => Coke [1] => Fanta [2] => Green Spot [3] => Pepsi [4] => Seven Up [5] => Sprite )

การเรียงลำดับของฟังก์ชัน sort เป็นตามรหัส ASCII 8 บิต จึงทำให้ตัวอักษร "Z" มาก่อน "a" (ในรหัส ASCII อักษร "Z" น้อยกว่า "a") และไม่สามารถควบคุมตัวอักษรที่ไม่ใช่ภาษาอังกฤษ

การเรียงลำดับ " ตามธรรมชาติ " ของตัวเลขที่พบในข้อความสามารถใช้ฟังก์ชัน natsort หรือ natcasesort ฟังก์ชันหลังไม่สนใจตัวพิมพ์เมื่อเรียงลำดับค่า

ถ้ามีไฟล์
"report1.pdf", "report10.pdf", "report20.pdf", "report6.pdf"

ผลลัพธ์น่าพอใจกว่าเป็น
"report1.pdf", "report6.pdf", "report10.pdf", "report20.pdf"

ฟังก์ชันการเรียงลำดับแบบเจาะจง

เมื่อต้องการควบคุมการเรียงลำดับของตัวเอง สามารถใช้ฟังก์ชัน usort (และ uasort) นี่เป็นการให้การเจาะจงการเรียงลำดับเองและทำการเปรียบเทียบค่าใน array ตัวอย่าง array ของรถยนต์ เมื่อต้องการเรียงลำดับตามราคา สามารถเขียนฟังก์ชันให้มองหาใน array ลูก และเปรียบเทียบราคา ฟังก์ชันผู้ใช้กำหนดเองนี้ส่งออก 1, 0 และ -1 ขึ้นกับค่าแรกมากกว่า เท่ากับ หรือน้อยกว่าค่าที่ 2

<?php

function compare_stock($var_stock 1 , $var_stock 2)
{

if ($var_stock 1[" stock"] > $var_stock 2[" stock"])
    return 1 ;
else if ($var_stock 1[" stock"] == $var_stock 2[" stock"])
    return 0 ;
else
    return - 1 ;

}

$products = array();

$products["ShampooAloevera"] = array("desc" => "Shampoo Aloe vera",
" volumn_cc" => 200 , " price" => 50 , " stock" => 245) ;

$products["ShampooSoapnut"] = array("desc" => "Shampoo Soapnut",
" volumn_cc" => 200 , " price" => 50 , " stock" => 98) ;

$products["ShampooGinger"] = array("desc" => "Shampoo Ginger",
" volumn_cc" => 200 , " price" => 50 , " stock" => 127) ;

uasort($products, "compare_stock");

foreach ($products as $product)
{

echo "{$product['desc']} จำนวน {$product['stock']}<br/>\n";

}

?>

เมื่อเรียกใช้จะให้ผลลัพธ์ดังนี้
Shampoo Soapnut จำนวน 98
Shampoo Ginger จำนวน 127
Shampoo Aloe vera จำนวน 245

การเรียงลำดับย้อนกลับ

ถ้าต้องการเรียงลำดับย้อนกลับสามารถใช้ฟังก์ชัน rsort ( มาจาก sort) และ arsort (มาจาก asort) แต่ไม่มี ursort เนื่องจากการย้อนกลับค่าสามารถเขียนฟังก์ชันเจาะจงการเรียงลำดับได้

การเรียงลำดับด้วยคีย์

ฟังก์ชันสำหรับการเรียงลำดับคีย์แทนการเรียงลำดับค่า คือ ksort, krsort และ uksort เนื่องการเรียงลำดับโดยคีย์ต้องรักษาชื่อคีย์หรือดัชนี จึงไม่มี kasort ฟังก์ชันเหล่านี้รับรู้ array ตามเรียงลำดับคีย์และรักษาค่าที่สัมพันธ์กับคีย์


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak