ผลต่างระหว่างรุ่นของ "ภาษาพีเอชพี/ประเภทของตัวแปร/Arrays"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Nullzerobot (คุย | ส่วนร่วม)
โรบอต: เก็บกวาด
Nullzero (คุย | ส่วนร่วม)
ย้อนการแก้ไขของ Nullzerobot (Talk) ไปยังรุ่นของ Zodlicious
บรรทัดที่ 1:
== Array ==
'''อาเรย์ (Arrays)''' ตือตัวแปรที่เก็บค่าในลักษณของกลุ่มของข้อมูล โดยการจับคู่ระหว่าง ดัชนี (index, key) => ค่า (value)
=== รูปแบบการใช้งาน ===
การสร้าง array ใน PHP นั้นมีด้วยกัน 2 รูปแบบ
==== กำหนดค่าด้วย array() ====
array( key => value
, ...
)
)
// key จะเป็น integer หรือ string อย่างใดอย่างหนึ่ง
// value เป็นค่าชนิดอะไรก็ได้
<source lang="php">
$arr = array("foo" => "bar", 12 => true);
บรรทัดที่ 16:
</source>
โดย key นั้นอาจจะเป็น [[ภาษาพีเอชพี/ประเภทของตัวแปร/จำนวนเต็ม|integer]] หรือ [[ภาษาพีเอชพี/ประเภทของตัวแปร/ข้อความ|string]] อย่างใดอย่างหนึ่ง ถ้า key มีรูปแบบเหมือน integer ก็จะถูกแปลเป็น integer
* ถ้า key เป็น "9" ก็จะแปลเป็น 9, แต่ถ้าเป็น "09" จะแปลเป็น "09" (string)
หากใส่เป็น [[ภาษาพีเอชพี/ประเภทของตัวแปร/จำนวนทศนิยม|float]] จะถูกตัดเป็น integer แทน โดย indexed-array และ associative-array นั้นใน PHP ถือว่าเหมือนกัน จึงทำให้สามารถมี key ได้ทั้งแบบ integer และ string ใน array ตัวเดียว
<source lang="php">
บรรทัดที่ 43:
* array และ object ไม่สามารถใช้เป็น key ได้
 
==== การกำหนดค่าและแก้ไขค่าด้วย วงเล็บใหญ่ [] ====
array ที่ประกาศแล้วสามารถแก้ไขค่าได้
$arr[key] = value;
$arr[] = value;
// key จะเป็น integer หรือ string อย่างใดอย่างหนึ่ง
// value เป็นค่าชนิดอะไรก็ได้
ถ้าหาก $arr ยังไม่ได้สร้างขึ้นก็จะได้รับการสร้างขึ้น
<source lang="php">
บรรทัดที่ 55:
 
$arr[] = 56; // แบบนี้เหมือนการใช้ $arr[13] = 56;
// ณ จุดนี้ของโค๊ด
 
$arr["x"] = 42; // เป็นการเพิ่ม element ใหม่ใส่ใน array โดยมี key "x"
 
unset($arr[5]); // ลบ element นี้ออกจาก array
 
บรรทัดที่ 73:
// ลบทุก element เหลือไว้แต่ตัว array :
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);
บรรทัดที่ 88:
</source>
Outputs:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Array
(
)
Array
(
[5] => 6
)
Array
(
[0] => 6
[1] => 7
)
=== array หลายมิติ ===
array หลายมิติจะว่าคล้าย array ซ้อน array ก็ใช่ ดูจากตัวอย่างจะเข้าใจง่ายกว่า
<source lang="php">
<?php
$fruits = array ( "fruits" => array ( "a" => "orange",
"b" => "banana",
"c" => "apple"
),
),
"numbers" => array ( 1,
2,
2,
3,
3,
4,
4,
5,
5,
6
6
),
),
"holes" => array ( "first",
5 => "second",
"third"
"third"
)
)
);
);
 
// ตัวอย่างการระบบุที่อยู่ของ array แบบ multi-dimension
echo $fruits["holes"][5]; // prints "second"
echo $fruits["fruits"]["a"]; // prints "orange"
บรรทัดที่ 135:
 
// สร้าง multi-dimensional array ตัวใหม่ขึ้น
$juices["apple"]["green"] = "good";
?>
</source>
=== ทำไม $foo[bar] ถึงผิด ===
<source lang="php">
<?php
บรรทัดที่ 147:
</source>
การทำแบบนี้มันผิด แต่ว่า สามารถใช้งานได้ ที่ผิดเนื่องจากไม่มีการใส่เครื่องหมายที่ทำให้ bar เป็น string ก็เลยทำให้ PHP ไปมองหา constant ที่ชื่อ bar ก่อน แต่ที่สามารถทำงานได้เนื่องจาก เมื่อ PHP ไม่สามารถหาตัวแปรชื่อนั้น ๆ ได้จะทำการแปลงให้เป็น string แทน(ก็คือเป็น 'bar' แทน bar)
=== การแปลงเป็น array ===
ถ้าแปลง integer, string, float, boolean, resource จะเป็น array หนึ่ง element โดยมี key เป็น 0 และเก็บค่าตัวแปรนั้นไว้ หรือจะบอกได้ว่า (array)$scalarValue เหมือน array($scalarValue) นั้นเอง<br/><br/>
แปลงจาก object ผลที่ได้คือ element ของ array ก็ได้จาก property ของ object โดย''ชื่อตัวแปร''จะเป็น key <br/><br/>
 
 
แปลงจาก object ผลที่ได้คือ element ของ array ก็ได้จาก property ของ object โดย''ชื่อตัวแปร''จะเป็น key <br/>
 
 
แปลง '''NULL''' จะมีค่าเท่ากับ empty array
=== การเปรียบเทียบ array กับ array ===
สามารถเทียบได้โดยใช้ array_diff() หรือใช้ '''array operator'''
=== ตัวอย่างเพิ่มเติม ===
ใน PHP นั้น array นั้นมีสามารถใช้งานให้เกิดประโยชน์ได้มากมาย
<source lang="php">
เส้น 163 ⟶ 159:
// การทำแบบนี้
$a = array( 'color' => 'red',
'taste' => 'sweet',
'shape' => 'round',
'name' => 'apple',
4 // key จะเป็น 0
);
);
 
$b = array('a', 'b', 'c');
เส้น 185 ⟶ 181:
 
// After the above code is executed, $a will be the array
// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round',
// 'name' => 'apple', 0 => 4), and $b will be the array
// array(0 => 'a', 1 => 'b', 2 => 'c'), or simply array('a', 'b', 'c').
?>
เส้น 194 ⟶ 190:
// Array เป็น (property-)map
$map = array( 'version' => 4,
'OS' => 'Linux',
'lang' => 'english',
'short_tags' => true
);
);
 
// ใช้รูปแบบ number index
$array = array( 7,
8,
8,
0,
0,
156,
156,
-10
-10
);
);
// มีค่าเท่ากับ array(0 => 7, 1 => 8, ...)
 
$switching = array( 10, // key = 0
5 => 6,
3 => 7,
'a' => 4,
11, // key = 6 (ค่า integer index สูงสุดคือ 5)
'8' => 2, // key = 8 (integer!)
'02' => 77, // key = '02'
0 => 12 // ค่า 10 จะถูกเขียนทับ 12
);
);
 
// empty array
$empty = array();
?>
</source>
สามารถคัดลอก array ได้ด้วยการใช้ '''reference operator''' (ในที่นี้คือ &)
<source lang="php">
<?php
เส้น 228 ⟶ 224:
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,
// $arr1 is still array(2, 3)
 
$arr3 = &$arr1; // จะเท่ากับให้ $arr3 เป็นตัวเดียวกันกับ $arr1 (เนื่องจากให้ $arr3 ไปชี้ตำแหน่ง memory เดียวกันกับ $arr1)
$arr3[] = 4; // เป็นการกำหนดค่าให้ $arr1 ด้วย