วันพฤหัสบดีที่ 27 พฤศจิกายน พ.ศ. 2557

การทำงานกับ Array

array ใน PHP มีความแตกต่างจากภาษาอื่นคือ สามารถตั้งชื่อดัชนีเป็นข้อความ เรียกว่า associative array นอกเหนือจากการใช้ตัวเลข การเก็บข้อมูลใน array สามารถเป็นตัวเลข ข้อความ รวมถึง array จึงทำให้การประยุกต์มีประสิทธิภาพ

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


array ของ PHP


ภาพ 1.4.1 การใช้และการเก็บข้อมูลของ array

การสร้าง Array และการเพิ่มข้อมูล
การสร้าง array ใช้คำสั่ง array การเพิ่มข้อมูลสำหรับ key เจาะจงใช้ => operator (คีย์นี้สามารถเป็นได้ทั้งตัวเลขหรือข้อความ) ถ้าไม่มีการระบุ PHP จะเลือกประเภทตัวเลขที่เริ่มต้นจากศูนย์
<?php
// PHP กำหนดคีย์ให้โดยเริ่มต้นที่ 0
$cars = array("Toyota", "Nissan", "Mazda", "Ford", "Audi", "BMW", "Benz");
// การใช้ชื่อ key
$home = array("size" => 200 , "style" => " กรรณิการ์" ,
" area" => 100 , "numBeds" => 3 , " numBaths" => 2 , "price" => 6000000) ;
?>
ถ้ามีข้อมูลในตัวแปร $car หรือ $home อยู่ก่อนจะถูกเขียนทับ รวมทั้งสามารถสร้าง array โดยการเพิ่มค่าไปยังตัวแปรที่ยังไม่มีการกำหนดได้ ( หรือตัวแปรที่ปัจจุบันยังไม่เป็นประเภทข้อมูล array)
<?php
// การสร้าง array ใหม่ค่าเดียวด้วยคีย์ 0
$productDesc[] = " เสื้อเชิร์ตชาย แขนยาว สีขาว" ;
?>
อีกวิธีในการสร้างคือ การคัดลอกจากอีกตัวแปร
<?php
// การสร้างสำเนาของ $car array รวมทั้งคีย์และค่า
$usedCar = $car;
?>
การเพิ่มข้อมูลไปยัง array ทำได้โดยการระบุคีย์ที่ต้องการให้ข้อมูลปรากฎ ถ้าไม่ระบุ PHP จะกำหนดเป็นเลขจำนวนเต็ม
<?php
 // array นี้จะมีค่าเป็น 0 , 1 , 2 และ 3
$noise = array(" ก๊าบ" , " มอ" , " อู๊ด" , " จิ๊บ") ;
$noise[] = " โฮ่ง" ; // ดัชนีหมายเลข 4
$noise[] = " เหมียว" ; // ดัชนีหมายเลข 5
$noise[ 6] = "กระต๊าก" ;
?>
ค่าเพิ่มใหม่จะได้รับการเพิ่มต่อท้าย ตัวนับเลขดัชนีจะได้รับการตั้งค่าเพิ่มขึ้น 1 จากค่าจำนวนเต็มใหญ่ที่สุด
<?php
// หมายเลขไม่ต่อเนื่อง สามารถเพิ่มได้ โดยเป็นการเพิ่มต่อท้าย array
$noise[ 84] = "ฮิ" ;
// หมายเหตุ รายการหมายเลข 11 เพิ่มไปที่ท้าย array ต่อจากรายการที่ 84
$noise[ 11] = "ตับแก" ;
// รายการนี้มีคีย์หรือดัชนีหมายเลข 85
$noise[] = " แบะ" ;
?>
 เมื่อแสดงผลด้วยฟังก์ชัน var_dump() จะมีผลลัพธ์ดังนี้
array( 10) { [ 0]= > string( 4) "ก๊าบ"
[1]= > string( 2) "มอ"
[2]= > string( 4) "อู๊ด"
[3]= > string( 17) "จิ๊บ"
[4]= > string( 4) "โฮ่ง"
[5]= > string( 6) "เหมียว"
[6]= > string( 7) "กระต๊าก"
[84]= > string( 2) "ฮิ"
[11]= > string( 5) "ตับแก"
[85]= > string( 3) "แบะ" }
คีย์สามารถเป็นคีย์ข้อความได้เช่นกัน
<?php
// การสร้างดัชนีด้วยข้อความ
$noiseByAnimal[] = array( " duck " => "ก๊าบ" , " cow " => "มอ" , " pig " => "อู๊ด" );
// การเพิ่มคู่ ดัชนี / ค่า
$noiseByAnimal[ " dog " ] = "โฮ่ง" ;
$noiseByAnimal[ " cat " ] = "เหมียว" ;
?>

การเข้าถึงหน่วยข้อมูลใน Array
หน่วยข้อมูลของ array สามารถเข้าถึงโดยการระบุคีย์
<?php
$food = array(" แกงเขียวหวาน" , " มัสมั่น" , " เป็ดย่าง" , " แกงส้ม") ;
echo " ฉันชอบรับประทาน ". $food[ 3] . " <br/>\n";
$computer = array("processor" => "Celeron 2.4 GHz",
" memory" => 256 , "HDD 1" = > 80000 ,
" graphics" => "Le Mel Super 5600 ") ;
echo " คอมพิวเตอร์ของฉันมีโพรเซสเซอร์ คือ " . $computer['processor'] . " <br/>\n";
?>
ตัวแปรสามารถใช้ระบุคีย์ได้
<?php
$x = 0 ;
echo " อาหารพิเศษวันนี้ คือ : " . $food[$x] . "<br/>\n";
?>
คีย์แบบข้อความมีความซับซ้อนเล็กน้อยเมื่อใช้ความสามารถของ PHP ในการวางตัวแปรภายใน double quoted ในสถานการณ์นี้ การเข้าถึงค่ากับตัวเลขและตัวแปรคีย์ไม่มีปัญหา แต่ประเภทข้อความสามารถเกิดขึ้นปัญหาได้

การลบหน่วยข้อมูลและ Array
การลบหน่วยข้อมูล (element) จากตัวแปร array เรียกฟังก์ชัน unset และระบุคีย์ที่ต้องการลบ
<?php
$softdrinks = array("Coke", "Pepsi", "Fanta", "Sprite", " Green Spot", "Seven Up");
unset($softdrinks[ 3]) ; // ลบ " Sprite" จาก array
?>
ใน array ไม่มีดัชนี 3 (“Fanta” อยู่ที่ดัชนี 2 และ “Green Spot” อยู่ที่ดัชนี 4) ลบ array ใช้ unset กับตัวแปร
<?php
unset($softdrinks); // $softdrinks ว่าง (unset)
?>

นับจำนวนหน่วยข้อมูลใน Array
การหาจำนวนหน่วยข้อมูลใน array เรียกฟังก์ชัน count ใน PHP สำหรับการหาจำนวนหน่วยข้อมูลใน array ระดับบน
<?php
$softdrinks = array("Coke", "Pepsi", "Fanta", "Sprite", "Green Spot", "Seven Up");
$qty = count($softdrinks);
// แสดงผลเป็น 6
echo "Array \$softdrinks มีหน่วยข้อมูล $qty รายการ <br/>\n";
?>

การทำงานซ้ำรอบกับหน่วยข้อมูลใน 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

Array หลายมิติ
มีโอกาสที่ต้องแสดงรายละเอียดด้วย array มากกว่า 2 มิติ โดย PHP ให้การสนับสนุนการทำงานนี้ด้วย array หลายมิติ (multi-dimension array)
เนื่องจากค่าหน่วยข้อมูลของ array สามารถเป็นได้ทุกอย่าง รวมถึงเป็นอีก array ต่อไปเป็นการสร้าง array หลายมิติ
<?php
$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) ;
?>
การเข้าถึงหน่วยข้อมูลใน array หลายมิติใช้การวางวงเล็บสี่เหลี่ยมกับแต่ละชื่อ
<?php
$descriptions = array_keys($products);
foreach ($descriptions as $desc)
{
print $products[$desc]["desc"]. " จำนวน: " . $products[$desc]["stock"]
. " <br/>\n";
}
?>
วิธีการสร้าง array หลายมิติที่สะดวกสามารถใช้ฟังก์ชัน array_fill ฟังก์ชันนี้สร้าง array ให้ด้วยค่าตามค่าเริ่มต้น ถ้าต้องการสร้างเมทริกซ์ 3 x 3 สามารถใช้ฟังก์ชัน array_fill ที่ใช้ 3 อากิวเมนต์ คือ ดัชนีเริ่มต้น จำนวนหน่วยข้อมูล และค่าที่ต้องการวางในแต่ละหน่วยข้อมูล
<?php
$metrix3d = array_fill(0, 3, array_fill(0, 3, 0));
foreach ($metrix3d as $row)
    echo "{$row[0]} {$row[1]} {$row[2]} <br/>\n";
?>
 ผลลัพธ์คือ
0 0 0
0 0 0
0 0 0

ปฏิบัติการบน 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 ตามเรียงลำดับคีย์และรักษาค่าที่สัมพันธ์กับคีย์

ปฏิบัติการอื่นบน Array
มีฟังก์ชันที่น่าสนใจกับปฏิบัติการบน array รวมถึงวิธีการต่างกันในการรวม array หรือสร้าง array จาก 2 array อื่น

array_merge
ฟังก์ชัน array_merge ใช้ 2 array และส่งออก array เดียว ด้วยการเพิ่มเนื้อหาของ array ที่ 2 ต่อท้าย array แรก คีย์ของทั้ง 2 array ได้รับการรักษา ถ้าคีย์ข้อความของ array ที่ 2 เหมือนกับ array แรก ค่าของคีย์นั้นของ array แรกจะถูกเขียนทับ ถ้ารายการของ array ที่ 2 เป็นคีย์ตัวเลขเหมือนกับ array แรกจะกำหนดเป็นตัวเลขใหม่ให้และเพิ่มต่อท้าย array นั้น
<?php
// คีย์เหมือนกัน
$ary1 = array('bank' => 'SCB', 9500, 3000);
$ary2 = array('bank' => 'BBL', 3500, 4800, 3000);
$ary3 = array_merge($ary1, $ary2);
print_r($ary3);
echo "<br/>\n";
// คีย์ไม่เหมือนกัน
$ary1 = array('bank' => 'SCB', 9500, 3000);
$ary2 = array('note' => 'BBL', 3500, 4800, 3000);
$ary3 = array_merge($ary1, $ary2);
print_r($ary3);
?>
ผลลัพธ์
Array ([bank] => BBL [0] => 9500 [1] => 3000 [2] => 3500 [3] => 4800 [4] => 3000)
Array ([bank] => SCB [0] => 9500 [1] => 3000 [note] => BBL [2] => 3500 [3] => 4800 [4] => 3000)

array_combine
ฟังก์ชันนี้ใช้ 2 array คือ array ของคีย์และค่า แล้วส่งออก array ใหม่ด้วยคีย์ที่เป็นค่าจาก array แรกและค่าจาก array ที่ 2 ความล้มเหลวเกิดขึ้น (ส่งออก FALSE) เมื่อขนาดของ 2 array นี้ไม่เท่ากัน
<?php
$ary 1 = array('name', 'age', 'province', 'profession');
$ary 2 = array('Somsak', 2 9, 'bangkok', 'store keeper');
$ary 3 = array_combine($ary 1 , $ary 2) ;
print_r($ary 3) ;
?>
ผลลัพธ์
Array ([name] => Somsak [age] => 29 [province] => bangkok [profession] => store keeper)

array_intersect
ฟังก์ชันนี้ใช้ 2 array และส่งออกชุดค่าที่ปรากฎใน 2 array คีย์เดิมได้รับการรักษา ถ้าค่าเดียวกันแต่มีคีย์ต่างกัน จะใช้คีย์ของ array แรก
<?php
$ary 1 = array('bank' => 'SCB', 9500 , 3000) ;
$ary 2 = array('bank' => 'BBL', 3500 , 48 00 , 30 00) ;
$ary 3 = array_intersect($ary 1 , $ary 2) ;
print_r($ary 3) ;
?>
ผลลัพธ์
Array ([1] => 3000)

array_search
การค้นหาค่าภายใน array สามารถใช้ฟังก์ชัน array_search โดยฟังก์ชันนี้ใช้ค่าค้นหาและ array ที่ต้องการค้นหาเป็นอากิวเมนต์ ฟังก์ชันนี้ส่งออกคีย์ของ array ที่พบค่าหรือ FALSE ถ้าไม่พบค่า
<?php
$ary 1 = array( 64 , 80 , 100 , 223 , 600 , 5 , 87 , 415 , 910) ;
var_dump(array_search( 600 , $ary 1)) ;
var_dump($key 2 = array_search( 200 , $ary 1)) ;
?>
ผลลัพธ์
int(4) bool(false)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น