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>”;
}