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 ทั้งในการพิมพ์ผลหรือใช้ในการปฏิบัติการข้อมูล ส่วนนี้จะแสดงวิธีปกติ 4 แบบในการเข้าถึงทุกหน่วยข้อมูล

foreach loop

foreach (array as [key =>] value)
        คำสั่ง ...

foreach loop ได้รับการออกแบบให้ทำงานกับหน่วยข้อมูลทั้งหมดใน array โดยเฉพาะ การใช้ให้ระบุ array ที่ต้องทำงานด้วยกับชื่อตัวแปร ใน loop นี้ประมวลผลแต่ละค่าใน array และชื่อตัวแปรจะให้สำเนาของค่าในรอบปัจจุบัน และ loop จะทำงานจนกระทั่งไม่มีรายการ

<?php

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

foreach ($softdrinks as $drink)
{

echo " เราจำหน่าย $drink<br/>\n";

}

?>

ถ้าต้องการเปลี่ยนค่าใน array ให้บอก foreach loop ให้กำหนดค่า by reference ด้วย & operator

<?php

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

foreach ($softdrinks as &$drink)
{

// ถ้าซื้อ Fanta จะขาย Fanta น้ำส้ม
if ($drink == "Fanta")
        $drink = "Fanta – น้ำส้ม ";

}

?>

ถ้าต้องการระบุตัวแปรที่ 2 ให้แต่ละคีย์ที่สัมพันธ์กับค่า การแยกค่าตัวแปรใช้ => operator

<?php

$userSoftware = array("operating system" => "Windows XP",
"web server" => "Apache", "antivirus" => "Avast",
"ftp" => "WS ftp", "database" => "Mysql");

foreach ($userSoftware as $thing => $software)
{

echo " ซอฟต์แวร์ของผู้ใช้ <b>$thing</b>: $software<br/>";

}

?>

foreach loop มีข้อได้เปรียบในการควบคุมคีย์ทุกประเภท รวมถึงประเภทตัวเลขมีช่องว่าง ดังนั้นจึงเป็นวิธีการที่เหมาะสมในการทำงานกับ array

for loop

for loop สามารถทำงานเป็นรอบกับค่าใน array

<?php

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

for ($i = 0; $i < count($softdrinks); $i++)
{

echo " เราจำหน่าย $softdrinks[$i] <br/>\n";

}

?>

for loop ยืดหยุ่นน้อยกว่า foreach loop ถ้า array ใช้คีย์ข้อความจะมีความลำบากในการเรียนรู้ชื่อคีย์ ในกรณีนี้ต้องรักษารายการหรือ array ของคีย์ที่ต้องการค้นหา หรือเรียกฟังก์ชัน array_keys ใน PHP ที่ส่งออก array ของชื่อคีย์ (ดัชนี) ทั้งหมดภายใน array

<?php

$userSoftware = array("operating system" => "Windows XP",
"web server" => "Apache", "antivirus" => "Avast",
"ftp" => "WS ftp", "database" => "Mysql");

$things = array_keys($userSoftware);
for ($i = 0; $i < count($things); $i++)
{

echo " ซอฟต์แวร์ของผู้ใช้ <b>$things[$i]</b>: "
. " $userSoftware[$things[$i]] "."<br/>";

}

?>

ถ้ามีการลบรายการใน array ด้วย unset ต้องใช้ฟังก์ชัน array_keys หรือใช้ฟังก์ชัน isset ตรวจสอบค่า ดังนั้นการใช้ foreach จะสะดวกกว่า

ตัวนับ internal loop และ each, next, prev, pos และ reset

array ของ PHP ทั้งหมดรักษาเคอร์เซอร์ (พอยต์เตอร์) ภายในของ array ที่สามารถทำงานซ้ำรอบกับหน่วยข้อมูลทั้งหมดใน array เมื่อใช้ร่วมกันของ each และ next การส่งหน่วยข้อมูลปัจจุบันที่ชี้โดยเคอร์เซอร์สามารถเรียกใช้ current (รวมถึง pos) การตั้งค่าใหม่ไปยังหน่วยข้อมูลแรกสามารถเรียกใช้ reset

each ทำการขวาง array และส่งค่า วิธีนี้ทำงานโดยส่งออกหน่วยข้อมูลปัจจุบันที่ชี้โดยเคอร์เซอร์ แล้วเลื่อนเคอร์เซอร์ไปยังหน่วยข้อมูลต่อไป array กับค่าและคีย์ของตำแหน่งเจาะจงได้รับการส่งออกโดยฟังก์ชันนี้ คีย์ได้รับการเข้าถึงที่คีย์ 0 หรือ 'key' และค่าเข้าถึงได้ที่คีย์ 1 หรือ 'value' ค่าส่งออกเป็น FALSE ถ้าไม่มีหน่วยข้อมูล (นั่นคือเคอร์เซอร์ผ่านไปถึงหน่วยข้อมูลสุดท้าย) หรือ array ว่าง

<?php

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

reset($softdrinks);

while (($item = each($softdrinks) !== FALSE)
{

echo " เราจำหน่าย <b>{$item[ ' value ' ]}</b><br/>\n";

}

?>

next เลื่อนเคอร์เซอร์ภายในไปยังหน่วยข้อมูลต่อไปใน array แล้วจึงส่งออกหน่วยข้อมูลนั้น (FALSE ถ้าไม่มีข้อมูล) prev เลื่อนเคอร์เซอร์ภายในย้อนกลับ 1 หน่วยข้อมูล แล้วส่งออกหน่วยข้อมูลนั้นที่ตำแหน่งใหม่ ฟังก์ชันคู่นี้ส่งออกค่าแทนที่ array เก็บคู่คีย์/ค่า ทั้ง next และ prev ส่งออก FALSE เมื่อไม่มีหน่วยข้อมูลใน array

ฟังก์ชัน reset ตั้งค่าเคอร์เซอร์ภายในไปยังหน่วยข้อมูลแรก ฟังก์ชัน end ตั้งค่าเคอร์เซอร์ไปยังหน่วยข้อมูลสุดท้าย

< ?php

$colors = array("white", "red", "green", "blue");

// นับ
echo "1 <br/>\n";
$item = current($colors);

do

echo "$item ";

while (($item = next($colors)) !== FALSE);

echo "<br/>\n";

// เลื่อนกลับ
end($colors);
$item = current($colors);

do

echo "$item ";

while (($item = prev($colors)) !== FALSE);

echo "<br/>\n";

?>

สคริปต์นี้สร้างผลลัพธ์
white red green blue
blue green red white

array_walk

อีกวิธีในการทำงานซ้ำรอบกับหน่วยข้อมูลทั้งหมดใน array คือการใช้ฟังก์ชัน array_walk ซึ่งใช้ array ที่ต้องการทำงานซ้ำรอบ และชื่อฟังก์ชันเป็นอากิวเมนต์ เพื่อเรียกแต่ละหน่วยข้อมูลเหล่านี้

ตัวอย่างต่อไปใช้ฟังก์ชัน array_walk คำนวณผลคูณของ 3 ใน array

<?php

function multiplyByThree($var_number, $var_key)
{

echo $var_number * 3;
echo " ";

}

$ numbers = array(1, 2, 3, 4, 5, 6);
array_walk($numbers, 'multiplyByThree');

?>

ผลลัพธ์คือ
3 6 9 12 15 18


  

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