PHP & Array อ. นัฐพงศ์ ส่งเนียม ม. ราชภัฎพระนคร

Download Report

Transcript PHP & Array อ. นัฐพงศ์ ส่งเนียม ม. ราชภัฎพระนคร

PHP & Array
อ. นัฐพงศ์ ส่ งเนียม
http://www.siam2dev.com
ม. ราชภัฎพระนคร
อาร์ เรย์ (Array)
คือชุดของข้ อมูลที่มีขนาดเปลี่ยนแปลงได้ เรียกว่ า dynamic array
หรือ vector(สาหรับอาร์ เรย์ มิตเิ ดียว)
$myarray[]=3;
$myarray[]=1.1;
$myarray[]="abc";
ขนาดจะปรับเปลี่ยนได้ คือขยายจานวนข้ อมูลที่เก็บอยู่ภายใน
อาร์ เรย์
ข้ อมูลแต่ ละตัวในอาร์ เรย์ ไม่ จาเป็ น ต้ องเป็ นข้ อมูลชนิดเดียวกัน
เช่ น อาจจะมีทงั ้ จานวนเต็ม เลขทศนิยม
arr4-1.php3
<?
$myarray[0] = 1;
echo "number of elements =".count($myarray)."<BR>\n";
$myarray[1] = "abc";
echo "number of elements =".count($myarray)."<BR>\n";
?>
$myarray[2] = 1.3;
echo "number of elements =".count($myarray)."<BR>\n";
$myarray[]= 13+10; // the same as $myarray[3]= 13+10;
echo "number of elements =".count($myarray)."<BR>\n";
for ($i=0; $i < 4; $i++) {
echo $myarray[$i]," \n";
}
การกาหนดตัวแปรอาร์ เรย์ เพื่อนาไปใช้ งานใน
โปรแกรม
เรากาหนดตัวแปรขึน้ มาเพื่อใช้ เป็ นอาร์ เรย์ เราไม่ จาเป็ นต้ อง
ประกาศตัวแปร
ค่ าของอาร์ เรย์ จะ ถูกกาหนดให้ ตอนที่ โปรแกรมทางาน (Run
time)
การใช้ ตัวแปรอาร์ เรย์ แบบไม่ ต้องกาหนดแบบข้ อมูลประเภท
array() ก่ อน
<?
$arr_1[1] = 2000;
//$arr_1เป็ นอาร์ เรย์ มิตเิ ดียว
$arrr_2[1][1]= 4000;
//$arr_2เป็ นอาร์ เรย์ สองมิติ
$arr_3[1][1][1] = 4000; //$arr_3เป็ นอาร์ เรย์ สามมิติ
?>
การใช้ ตัวแปรอาร์ เรย์ แบบมีการกาหนดแบบข้ อมูล
ประเภทอาร์ เรย์ ก่อน
ตัวอย่ าง
$arr_1 = array();
$arr_1[1] = 72;
//กาหนดให้ $arr_1 เป็ นอาร์ เรย์ ว่าง
//$arr_1 เป็ นอาร์ เรย์ มิตเิ ดียว
การกาหนดค่ าในอาร์ เรย์ โดยใช้ คาสั่ง Array
ฟั งก์ ชัน array() แต่ ไม่ มีการกาหนดค่ า ให้ กับตัวแปรอาร์ เรย์ ท่ ี
สร้ างขึน้ มา ซึ่งค่ าของรายการในตัวแปรอาร์ เรย์ นัน้ สามารถที่จะ
ระบุได้ ด้วยคาสั่งของ ฟั งก์ ชัน array() โดยค่ าของข้ อมูลแต่ ละค่ า
จะถูกขัน้ ด้ วย เครื่องหมาย comma (,)
รู ปแบบการกาหนดค่ าให้ กับตัวแปรอาร์ เรย์ โดยใช้
ฟั งก์ ชัน array()
ตัวแปรอาร์ เรย์ = array ( ค่ าที่1,ค่ าที่2,ค่ าที่3,…..);
ตัวอย่ าง
$arr=arrray(10,20,30.30,"PHP","PROGRMMING");
for($r=0; $r < count($arr) ; $r++){
echo (" index $r = $arr [$r]<br>");
}
การระบุตาแหน่ ง,กาหนดค่ า ,และการอ่ านค่ าจาก
ตัวแปรอาร์ เรย์
สิ่งที่สาคัญที่สุดในการเข้ าถึงข้ อมูลในตัวแปรอาร์ เรย์ นัน้ เราต้ องรู้
เลขดัชนีท่ จี ะใช้ เป็ นตัวระบุท่ อี ยู่ของค่ าข้ อมูลที่ต้องการอ่ าน
การอ้ างถึงที่อยู่ของข้ อมูลในตัวแปรอาร์ เรย์ นัน้ ตัวแปรอาร์ เรย์
ต้ องตามด้ วย[ ]
$arr[]="php";
$arr[]=10.50;
<HTML>
<HEAD>
<TITLE>Figure 5-2</TITLE>
</HEAD>
<?
$Cities[] = "San Francisco";
$Cities[] = "Los Angeles";
$Cities[] = "New York";
$Cities[] = "Martinez";
/*
** count number of elements
*/
$indexLimit = count($Cities);
/*
** print out every element
*/
for($index=0; $index < $indexLimit; $index++)
{
print("City $index is $Cities[$index]. <BR>\n");
}
?>
</BODY>
</HTML>
City 0 is San Francisco.
City 1 is Los Angeles.
City 2 is New York.
City 3 is Martinez.
5-3.php3
<HTML>
<HEAD> <TITLE>Figure 5-3</TITLE>
</HEAD>
<?
/*
** fill in some information
*/
$UserInfo["Name"] = "Leon Atkinson";
$UserInfo["Location"] = "Martinez, California";
$UserInfo["Occupation"] = "Web Engineer";
for(reset($UserInfo);
$key = key($UserInfo);
next($UserInfo))
{
$value = pos($UserInfo);
print("$key is $value.<BR>\n");
}
?>
</BODY>
</HTML>
การใช้ อาร์ เรย์ หลายมิติ (Multidimensional Array)
กาหนดชื่อตัวแปรแล้ วตามด้ วยเครื่อง [..][..] สาหรับอาร์ เรย์ สอง
มิตแิ ละ [.. ][.. ] [.. ] สาหรับอาร์ เรย์ สามมิติ
$arr_2[1][1] = 4000; //$arr_2เป็ นอาร์ เรย์สองมิติ
$arr_3[1][1][1] = 2000; //$arr_3เป็ นอาร์ เรย์สามมิติ
การใช้ อาร์ เรย์ หลายมิติ (Multidimensional Array) ต่ อ
$dim = 3;
for ($row=0; $row <= $dim; $row++) {
for ($column=0; $column <= $dim; $column++) {
$myarray2[$row][$column] = 4*$row + $column;
echo $myarray2[$row][$column]," ";
}
echo "<BR>\n";
}
<HTML>
<HEAD>
<TITLE>Figure 5-4</TITLE>
</HEAD>
<?
$monthName = array(1=>"January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October", "November", "December");
print("Month 5 is $monthName[5] <BR>\n");
?>
</BODY>
</HTML>
อาร์ เรย์ แบบเชื่อมโยง (associative array)
การเก็บข้ อมูลในอาร์ เรย์ แบบนีจ้ ะใช้ กับข้ อมูลที่จัดเก็บเป็ นคู่ๆ
ใช้ ทา lookup table
เช่ น สมมุตวิ ่ า "red" ให้ แทนค่ า 0xff0000 "green" ให้ แทนค่ า
0x00ff00 และ "blue" ให้ แทนค่ า 0x0000ff โดยเก็บไว้ ในอาร์ เรย์ ช่ ือ
$color_table
อาร์ เรย์ แบบเชื่อมโยง (ต่ อ)
$color_table["red"] = 0xff0000;
$color_table["green"] = 0x00ff00;
$color_table["blue"] = 0x0000ff;
$color_name= "red";
echo "value = ".$color_table[ $color_name]."<BR>\n";
อาร์ เรย์ แบบเชื่อมโยง (ต่ อ)
สร้ างอาร์ เรย์ แบบเชื่อมโยงได้ โดยใช้ คาสั่ง array ()
เราสามารถสร้ างอาร์ เรย์แบบเชื่อมโยงได้ โดยใช้ คาสัง่ array () ดังนี ้
$color_table = array(
"red" => 0xff0000,
"green" => 0x00ff00,
"blue" => 0x0000ff
);
สร้ างอาร์ เรย์ แบบเชื่อมโยงเป็ นสองมิติ
เราสามารถสร้ างอาร์ เรย์แบบเชื่อมโยงเป็ นสองมิติได้ เช่น
<?
$countries = array (
"thailand" => array ( "zone" => "Asia", "D_NAME" => ".th"),
"malasia" => array ( "zone" => "Asia", "D_NAME" => ".my"),
"india" => array ( "zone" => "Asia", "D_NAME" => ".in"),
"holland" => array ( "zone" => "Europe", "D_NAME" => ".nl"),
"france" => array ( "zone" => "Europe", "D_NAME" => ".fr")
);
echo "domain name=".$countries[ "thailand"]["D_NAME"]."<BR>\n";
?>
การใช้ คาสั่ง each และ list สาหรับอาร์ เรย์ แบบเชื่อมโยง
ถ้ าเราต้ องการจะเข้ าถึงข้ อมูลแต่ ละคู่ท่ ถี ูกเก็บอยู่ในอาร์ เรย์ แบบ
เชื่อมโยง เราอาจจะใช้ วิธีเรียกผ่ านฟั งก์ ชัน each() และ list()
การใช้ คาสั่ง each และ list สาหรับอาร์ เรย์ แบบเชื่อมโยง(ต่ อ)
unset($a);
$a = array( "a" => 10, "b" => 20, "c" => 30 );
while (list($key, $value) = each($a)) {
echo "$key=$value <BR>\n";
}
จะได้ ผลลัพธ์ a=10 ,b=20 ,c=30
<?
// The require function loads and executes the
// specified file. In this case, the dump_array
// function is defined.
require('common.inc');
// Define some scalar variables.
$int_number_of_books = 20;
$str_book_title = 'Of Mice and Men';
// Define a complex array.
$arr_books = array(
'number_of_books' => $int_number_of_books
,'lst_books' => array(
'one' => array(
'name' => 'Of Mice and Men'
)
,'two' => array(
'name' => 'Moby Dick'
)
)
);
echo "<P>Examples Using Scalar Variables:</P>";
echo "<UL>";
echo '<P>"There are $int_number_of_books books." = ';
echo "<B>There are $int_number_of_books books.</B></P>";
echo '<P>"The first book is \"$str_book_title\"." = ';
echo "<B>The first book is \"$str_book_title\".</B></P>";
echo "</UL>";
echo "<P>Examples Using Array Variables:</P>";
echo "<UL>";
// Show the array to demonstrate its complexity.
dump_array($arr_books);
// There are several ways to specify array keys
$str_key = 'number_of_books';
echo "<P>Using a variable as the array key:<BR>";
echo '<UL>"There are $arr_books[$str_key] books." = ';
echo "<B>There are $arr_books[$str_key] books.</B></UL>";
echo "<P>Using a bare word as the array key:<BR>";
echo '<UL>"There are $arr_books[number_of_books] books." = ';
echo "<B>There are $arr_books[number_of_books] books.</B></UL>";
echo "</UL>";
?>
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน array
รูปแบบการใช้ งาน array array( );
คาสั่งที่ใช้ ในการสร้ างตัวแปรอาร์ เรย์ โดยเราสามารถกาหนดค่ าของ
ดัชนีและค่ าของข้ อมูลไปพร้ อมกับการสร้ างตัวแปรอาร์ เรย์
$test1=array(); //สร้ างตัวแปรอาร์ เรย์ ว่าง $test1
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน array_walk
รูปแบบการใช้ งาน int array_walk(array arr,string func);
คาสั่งที่ใช้ ในการเข้ าถึงข้ อมูลที่เก็บอยู่ในรูปแบบของตัวแปร
อาร์ เรย์ โดยต้ องการอากิวเมนต์ สองตัวคือ
1. อาร์ เรย์ ท่ ตี ้ องการเข้ าถึงข้ อมูลที่เก็บไว้ ในอาร์ เรย์ นัน้
2. อาร์ เรย์ ท่ ตี ้ องการเข้ าถึงข้ อมูลที่เก็บไว้ ในอาร์ เรย์ นัน้
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน count
รูปแบบการใช้ งาน void count (array arr);
คาสั่งที่ใช้ นับจานวนของข้ อมูลที่เก็บอยู่ภายในรายการข้ อมูล
ของอาร์ เรย์ นัน้ ว่ ามีจานวนข้ อมูลทัง้ หมดเท่ าไร
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน current
รูปแบบการใช้ งาน mixed current(array arr);
เป็ นคาสั่งที่ใช้ ในการคืนค่ าของข้ อมูลที่ตาแหน่ ง พอย์ เตอร์
(pointer)ชีอ้ ยู่(ภายในรายการข้ อมูลของอาร์ เรย์ จะมี pointer เป็ น
ตัวระบุตาแหน่ งปั จจุบันของข้ อมูลนัน้ )
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort=array(50,40,30,20);
echo current($sort),"br>";
//แสดงค่า 50
next($sort);
//เลื่อน pointer ไปยังข้ อมูลตัวต่อไป
echo current($sort);
//แสดงค่า 40
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน each
รูปแบบการใช้ งาน array each (array arr);
คาสั่งที่ใช้ ในการอ่ านค่ าข้ อมูลของตัวแปรอาร์ เรย์ ทลี ะตัว เมื่อ
อ่ านแล้ ว pointer ที่ชีต้ าแหน่ งของข้ อมูลก็จะเลื่อนไปยังข้ อมูลตัว
ถัดไป และค่ าที่อ่านได้ นัน้ จะเก็บไว้ ในตัวแปรอาร์ เรย์ อีกที
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array(5,40,30,20);
$get = each($sort); /*ค่าใน $sort มาหนึง่ ค่าแล้ วเลื่อน pointer ไปยังข้ อมูล
ตัวถัดไปโดย $get จะเป็ นตัวแปรอาร์ เรย์ที่รับค่าที่อา่ นได้ */
echo “$get[0] => $get[1] <br>”;
echo “$get[key] => $get[value]”;
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน end
รูปแบบการใช้ งาน void end (array arr);
เป็ นคาสั่งที่ใช้ เลื่อน pointer ที่ชีต้ าแหน่ งที่อยู่ของข้ อมูลปั จจุบัน
ไปยังตาแน่ งที่อยู่สุดท้ ายของรายการข้ อมูลของอาร์ เรย์ นัน้
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array ( 50, 40, 30, 20 );
echo current($sort).”<br>”// แสดงค่า 50
end($sort); // เลื่อน pointer ไปยังข้ อมูลตัวสุดท้ าย
echo current($sort); // แสดงค่า 20
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน key
รูปแบบการใช้ งานฟั งก์ ชัน mixed key (array arr);
เป็ นคาสั่งที่ใช้ ในการตรวจสอบว่ าตาแหน่ งปั จจุบันอยู่ท่ ี pointer
ชีข้ ้ อมูลในอาร์ เรย์ อยู่นัน้ ดัชนีของข้ อมูลนัน้ มีค่าเป็ นอะไร
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array (“start”=>50,40,30,”stop”=>20);
echo key($sort).”<br>”; // แสดงค่าดัชนีปัจจุบนั ที่ pointer ชี ้อยู่
end($sort); // เลื่อน pointer ไปยังข้ อมูลตัวต่อไป
echo key($sort); // แสดงค่าดัชนีปัจจุบนั ที่ pointer ชี ้อยู่
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน list
รูปแบบการใช้ งาน void list (var1,var2,…);
คาสั่งที่ใช้ ในการรับค่ าที่อ่านมาได้ จากตัวแปรอาร์ เรย์ โดยจานวน
ของตัวแปร (var1,var2,…) ที่ตงั ้ รับในคาสั่งนีข้ นึ ้ อยู่กับขนาด
อาร์ เรย์ ท่ สี ่ งค่ ามาให้ ว่าอาร์ เรย์ นัน้ ส่ งค่ าข้ อมูลมาให้ จานวนกี่ค่า
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$arr = array(“A”=>10,”B”=>20,”C”=>30);
while (list($key,$data)=each($arr)){
echo “$key =>$data<br>”;
}
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน next
รูปแบบการใช้ งาน mixed next(array arr)
เป็ นคาสั่งที่ใช้ เลื่อน pointer ให้ ชีไ้ ปยังข้ อมูลตัวถัดไปในรายการ
ข้ อมูลของอาร์ เรย์
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array(50,40,30,20);
echo current($sort).:”<br>”; // แสดงค่าข้ อมูลปั จจุบนั
next($sort); // เลื่อน pointer ไปยังข้ อมูลตัวต่อไป
echo current($sort); // แสดงค่าข้ อมูลหลังจากเลื่อน pointer
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน prev
รูปแบบการใช้ งาน mixed prev (array arr)
เป็ นคาสั่งที่ใช้ เลื่อน pointer ให้ ชีไ้ ปยังข้ อมูลตัวก่ อนหน้ านีท้ ่ มี ีการ
เลื่อน pointer มาในรายการข้ อมูลของอาร์ เรย์
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array(50,40,30,20);
echo current($sort).”<br>”; // แสดงค่าข้ อมูลปั จจุบนั
next($sort); // เลื่อน pointer เดินหน้ าไปยังข้ อมูลตัวต่อไป
echo current($sort).”<br>”; // แสดงค่าข้ อมูลหลังจากเลื่อน pointer
prev($sort); // เลื่อน pointer ถอยหลังไปยังข้ อมูลตัวก่อนหน้ านี ้
echo current($sort); // แสดงค่าข้ อมูลหลังจากเลื่อน pointer
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน reset
รูปแบบการใช้ งาน void reset (array arr)
เป็ นคาสั่งที่กาหนดค่ าเริ่มต้ นของ pointer ใหม่ โดยให้ มาเริ่มต้ นที่
ข้ อมูลตัวแรกของรายการข้ อมูลทัง้ หมดไม่ ว่าตอนนัน้ pointer จะ
ชีอ้ ยู่ท่ ขี ้ อมูลใดก็ตาม
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array(50,40,30,20);
echo current($sort).”<br>”; // แสดงค่าข้ อมูลปั จจุบนั
next($sort); // เลื่อน pointer เดินหน้ าไปยังข้ อมูลตัวต่อไป
echo current($sort).”<br>”; //แสดงค่าข้ อมูลหลังจากเลื่อน pointer
next($sort); // เลื่อน pointer เดินหน้ าไปยังข้ อมูลตัวต่อไป
echo current($sort).”<br>”; // แสดงค่าข้ อมูลหลังจากเลื่อน pointer
next($sort); // เลื่อน pointer เดินหน้ าไปยังข้ อมูลตัวต่อไป
echo current($sort).”<br>”; // แสดงค่าข้ อมูลหลังจากเลื่อน pointer
reset($sort); // สัง่ ให้ pointer ไปเริ่มต้ นที่ข้อมูลตัวแรกของรายการ
echo current($sort); // แสดงค่าข้ อมูลหลังจากใช้ คาสัง่ reset
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน sizeof
รูปแบบการใช้ งาน int sizeof (array arr);
 การทางานของคาสั่งนีจ้ ะเหมือนกับคาสั่ง count
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
ฟั งก์ ชัน sort
รูปแบบการใช้ งาน void sort (array,arr);
เป็ นคาสั่งที่ใช้ ในการเรียงลาดับรายการข้ อมูลตัวแปรอาร์ เรย์ นัน้
โดยจัดเรียงข้ อมูลจากค่ าน้ อยไปหาค่ ามาก
ฟั งก์ ชันที่เกี่ยวกับตัวแปรอาร์ เรย์
$sort = array(50,40,30,20);
sort($sort);
for($r = 0; $r < count($sort);$r++){
echo “$sort[$r]<br>”;
}