GORAGOD.com

เรื่องน่ารู้เกี่ยวกับแอเร์ยของ PHP (Array PHP)

แอเรย์ (Array) เป็นตัวแปรประเภทหนึ่งที่มีความสำคัญมาก การทำความเข้าใจกับแอเรย์ให้ดี สามารถประยุกต์ใช้ในการเขียนโปรแกรมให้ง่ายขึ้นได้ ลดการใช้อัลกอรึทึมที่ซับซ้อน
ในบทความนี้ผมจะพูดถึงฟังก์ชั่นพื้นฐานต่างๆเกี่ยวกับแอเรย์ของ PHP

พื้นฐานเกี่ยวกับแอเรย์
วิธีสร้างแอเรย์ของ PHP มี 2 วิธี คือใช้ array() และ [] โดยเป็นการระบุแบบ Key และ Value โดยที่ Key สามารถเป็นตัวเลขหรือสตริงค์ก็ได้
$array = array(1 => 'One', -2 => 'Two', 'สาม' => 3, 0.1 => '0.1', 1 => 'หนึ่ง');
/*
array (
  1 => 'หนึ่ง',
  -2 => 'Two',
  'สาม' => 3,
  0 => '0.1',
)
 */

$array = [1 => 'One', -2 => 'Two', 'สาม' => 3, 0.1 => '0.1', 1 => 'หนึ่ง'];
/*
array (
  1 => 'หนึ่ง',
  -2 => 'Two',
  'สาม' => 3,
  0 => '0.1',
)
 */

$array = ['One', 'Two', 'Three'];
/*
array (
  0 => 'One',
  1 => 'Two',
  2 => 'Three',
)
*/

ข้อสังเกต
  • Key สามารถระบุเป็นตัวเลขติดลบได้ แต่ไม่สามารถระบุตัวเลขทศนิยมได้
  • ในกรณีที่มี Key ซ้ำ จะใช้ตำแหน่งของคีย์ตัวแรกสุด แต่ Value เปลี่ยนเป็นของตัวสุดท้าย
  • หากไม่ระบุ Key เราจะได้ Key เป็นตัวเลข เริ่มต้นตั้งแต่ 0
[] จะเป็นวิธีที่สั้นกว่าในการสร้างแอเรย์ แต่จะสามารถใช้ [] ได้ตั้งแต่ PHP 5.4 ขึ้นไปเท่านั้นใครที่ใช้ PHP เวอร์ชั่นต่ำกว่านี้ ให้ใช้ array() ได้อย่างเดียว

ฟังก์ชั่นพื้นฐานเกี่ยวกับแอเรย์ของ PHP
  • array_combine รวมสองแอแรย์เข้าด้วยกันโดยพารามิเตอร์แรกจะเป็น Key และพารามเตอร์ตัวที่สองจะเป็น Value
  • array_keys คืนค่ารายการ Key ทั้งหมดของแอเรย์
  • array_values คืนค่า Value ทั้งหมดของแอเรย์
  • array_flip  กลับ Key เป็น Value และ Value เป็น Key
$keys = ['one', '0.1', 0.1, '100', 100, '200'];
$values = ['หนึ่ง', '0.1', 'ศูนย์จุดหนึ่ง', 100, '100', '200'];
$array = array_combine($keys, $values);
var_export($array);
/*
array (
  'one' => 'หนึ่ง',
  '0.1' => 'ศูนย์จุดหนึ่ง',
  100 => '100',
  200 => '200',
)
 */

var_export(array_keys($array));
/*
array (
  0 => 'one',
  1 => '0.1',
  2 => 100,
  3 => 200,
)
 */

var_export(array_values($array));
/*
array (
  0 => 'หนึ่ง',
  1 => 'ศูนย์จุดหนึ่ง',
  2 => '100',
  3 => '200',
)
 */

var_export(array_flip($array));
/*
array (
  'หนึ่ง' => 'one',
  'ศูนย์จุดหนึ่ง' => '0.1',
  100 => 100,
  200 => 200,
)
*/

in_array ฟังก์ชั่นตรวจสอบว่ามี Value ที่ต้องการอยู่ในแอเรย์หรือไม่ คืนค่า true ถ้ามี หรือ false ถ้าไม่มี
array_key_exists ฟังก์ชั่นตรวจสอบว่ามี Key ที่ต้องการอยู่ในแอเรย์หรือไม่ คืนค่า true ถ้ามี หรือ false ถ้าไม่มี ฟังก์ชั่นนี้สามารถใช้ isset แทนได้
array_search ฟังก์ชั่นค้นหา Value ในแอเรย์ คืนค่า Key ถ้าไม่เจอคืนค่า false มีพารามิเตอร์ตัวที่ 3 ถ้าระบุเป็น true จะค้นหา Value ที่เป็นประเภทเดียวกันด้วย
$array = array (
  'one' => 'หนึ่ง',
  '0.1' => 'ศูนย์จุดหนึ่ง',
  100 => '100',
  200 => '200',
);
in_array('one', $array);
// false
in_array('หนึ่ง', $array);
// true
array_key_exists('one', $array);
// true
isset($array['one']);
// true
array_search(100, $array);
// 100
array_search(100, $array, true);
// false