ผลต่างระหว่างรุ่นของ "ภาษาพีเอชพี/ประเภทของตัวแปร/Arrays"
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Zodlicious (คุย | ส่วนร่วม) →กำหนดค่าด้วย array(): แก้ไขลิงค์ |
Nullzerobot (คุย | ส่วนร่วม) ล โรบอต: เก็บกวาด |
||
บรรทัดที่ 1:
== Array ==
'''อาเรย์ (Arrays)''' ตือตัวแปรที่เก็บค่าในลักษณของกลุ่มของข้อมูล โดยการจับคู่ระหว่าง ดัชนี (index, key) => ค่า (value)
=== รูปแบบการใช้งาน ===
การสร้าง array ใน PHP นั้นมีด้วยกัน 2 รูปแบบ
==== กำหนดค่าด้วย array() ====
)
<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 ยังไม่ได้สร้างขึ้นก็จะได้รับการสร้างขึ้น
<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) {
}
print_r($array);
บรรทัดที่ 88:
</source>
Outputs:
=== array หลายมิติ ===
array หลายมิติจะว่าคล้าย array ซ้อน array ก็ใช่ ดูจากตัวอย่างจะเข้าใจง่ายกว่า
<source lang="php">
<?php
$fruits = array ( "fruits" => array ( "a" => "orange",
),
2,
3,
4,
5,
6
),
"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) นั้นเอง
แปลงจาก object ผลที่ได้คือ element ของ array ก็ได้จาก property ของ object โดย''ชื่อตัวแปร''จะเป็น key <br/><br/>▼
▲แปลงจาก object ผลที่ได้คือ element ของ array ก็ได้จาก property ของ object โดย''ชื่อตัวแปร''จะเป็น key
แปลง '''NULL''' จะมีค่าเท่ากับ empty array
=== การเปรียบเทียบ array กับ array ===
สามารถเทียบได้โดยใช้ array_diff() หรือใช้ '''array operator'''
=== ตัวอย่างเพิ่มเติม ===
ใน PHP นั้น array นั้นมีสามารถใช้งานให้เกิดประโยชน์ได้มากมาย
<source lang="php">
เส้น 159 ⟶ 163:
// การทำแบบนี้
$a = array( 'color' => 'red',
);
$b = array('a', 'b', 'c');
เส้น 181 ⟶ 185:
// 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').
?>
เส้น 190 ⟶ 194:
// Array เป็น (property-)map
$map = array( 'version' => 4,
);
// ใช้รูปแบบ number index
$array = array( 7,
8,
0,
156,
-10
);
// มีค่าเท่ากับ array(0 => 7, 1 => 8, ...)
$switching = array( 10, // key = 0
);
// empty array
$empty = array();
?>
</source>
สามารถคัดลอก array ได้ด้วยการใช้ '''reference operator''' (ในที่นี้คือ &)
<source lang="php">
<?php
เส้น 224 ⟶ 228:
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,
$arr3 = &$arr1; // จะเท่ากับให้ $arr3 เป็นตัวเดียวกันกับ $arr1 (เนื่องจากให้ $arr3 ไปชี้ตำแหน่ง memory เดียวกันกับ $arr1)
$arr3[] = 4; // เป็นการกำหนดค่าให้ $arr1 ด้วย
|