0Pricing
PHP Academy · บทเรียน

ฟังก์ชันแปลงอาร์เรย์

ใช้ array_map, array_filter และ array_reduce

ฟังก์ชันแปลงอาร์เรย์ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

การแปลงอาร์เรย์เชิงฟังก์ชัน

PHP มีฟังก์ชันระดับสูงที่ทรงพลังสามรายการสำหรับแปลงอาร์เรย์โดยไม่ต้องใช้ลูปอย่างชัดเจน:

  • array_map() — แปลงแต่ละองค์ประกอบ
  • array_filter() — เก็บองค์ประกอบที่ผ่านการทดสอบ
  • array_reduce() — ลดรูปให้เหลือค่าเดียว

array_map()

ใช้ฟังก์ชันเรียกกลับกับทุกองค์ประกอบแล้วส่งกลับอาร์เรย์ใหม่:

<?php
$prices = [10, 20, 30, 40];

$doubled = array_map(fn($p) => $p * 2, $prices);
print_r($doubled); // [20, 40, 60, 80]

// Multiple arrays
$a = [1, 2, 3];
$b = [10, 20, 30];
$sums = array_map(fn($x, $y) => $x + $y, $a, $b);
print_r($sums); // [11, 22, 33]

array_filter()

เก็บองค์ประกอบที่ตรงตามเงื่อนไขของฟังก์ชันเรียกกลับ หากไม่ระบุฟังก์ชันเรียกกลับ จะลบค่าที่เป็นเท็จออก:

<?php
$numbers = [1, 2, 3, 4, 5, 6];

$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // [1=>2, 3=>4, 5=>6] — keys preserved!

$reindexed = array_values($evens); // re-index

$mixed = [0, 'hello', '', null, false, 42];
print_r(array_filter($mixed)); // [1=>'hello', 5=>42]

array_reduce()

ลดอาร์เรย์ให้เหลือค่าเดียวโดยใช้ฟังก์ชันเรียกกลับสะสมไปทีละรายการ:

<?php
$cart = [
    ['name' => 'Widget', 'price' => 10],
    ['name' => 'Gadget', 'price' => 25],
    ['name' => 'Doohickey', 'price' => 5],
];

$total = array_reduce($cart, fn($carry, $item) => $carry + $item['price'], 0);
echo $total;  // 40

การเชื่อมการแปลง

เชื่อมการแมป การกรอง และการลดรูปเพื่อสร้างกระบวนการข้อมูลที่สื่อความหมาย:

<?php
$scores = [45, 80, 30, 90, 55, 70];

$passingAvg = array_sum(
    array_filter($scores, fn($s) => $s >= 50)
) / count(array_filter($scores, fn($s) => $s >= 50));

echo $passingAvg;  // 74.75

array_map กับคีย์

array_map ไม่ส่งคีย์มาให้ ใช้ array_walk เมื่อจำเป็นต้องใช้ทั้งคีย์และค่า:

<?php
$prices = ['apple' => 1.0, 'banana' => 0.5, 'cherry' => 2.0];

$formatted = [];
array_walk($prices, function($price, $name) use (&$formatted) {
    $formatted[$name] = '$' . number_format($price, 2);
});

print_r($formatted);

array_chunk()

แบ่งอาร์เรย์ออกเป็นส่วนย่อยตามขนาดที่กำหนด:

<?php
$items = range(1, 10);
$batches = array_chunk($items, 3);
print_r($batches);
// [[1,2,3], [4,5,6], [7,8,9], [10]]

array_combine()

สร้างอาร์เรย์แบบเชื่อมโยงโดยรวมอาร์เรย์คีย์เข้ากับอาร์เรย์ค่า:

<?php
$keys   = ['name', 'age', 'city'];
$values = ['Alice', 30, 'London'];

$person = array_combine($keys, $values);
print_r($person);
// ['name'=>'Alice','age'=>30,'city'=>'London']

การจับคู่สองอาร์เรย์ด้วย array_map

PHP ไม่มีฟังก์ชัน zip ในตัว แต่ array_map(null, ...) สามารถสร้างโครงสร้างที่มีลักษณะเหมือน zip ได้:

<?php
$names  = ['Alice', 'Bob'];
$scores = [90, 85];

$zipped = array_map(null, $names, $scores);
print_r($zipped);
// [['Alice', 90], ['Bob', 85]]

array_map รักษาคีย์ไว้

เมื่อใช้กับอาร์เรย์เดียว array_map จะรักษาคีย์ไว้ ใช้ array_values เพื่อจัดดัชนีใหม่:

<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_map(fn($v) => $v * 10, $assoc);
print_r($result);
// ['a'=>10, 'b'=>20, 'c'=>30] — keys preserved

array_sum และ array_product

ฟังก์ชันช่วยลดรูปอย่างรวดเร็วสำหรับอาร์เรย์ตัวเลข:

<?php
$nums = [1, 2, 3, 4, 5];

echo array_sum($nums);      // 15
echo array_product($nums);  // 120 (1*2*3*4*5)

// Works with floats too
$prices = [1.5, 2.5, 3.0];
echo array_sum($prices);    // 7.0

ตรวจสอบอย่างรวดเร็ว

ฟังก์ชันใดใช้ฟังก์ชันเรียกกลับกับสมาชิกทุกตัวและส่งคืนอาร์เรย์ใหม่

สรุปทบทวน: ฟังก์ชันแปลงอาร์เรย์

สรุป:

  • array_map() — แปลงสมาชิกแต่ละตัวเป็นอาร์เรย์ใหม่
  • array_filter() — เก็บสมาชิกที่ตรงตามเงื่อนไข
  • array_reduce() — ลดรูปให้เหลือค่าเดียวที่สะสม
  • array_chunk() — แบ่งออกเป็นอาร์เรย์ย่อย
  • array_combine() — สร้างอาร์เรย์แบบเชื่อมโยงจากคีย์และค่า
  • array_sum/product() — การลดรูปตัวเลขอย่างรวดเร็ว

คำถามที่พบบ่อย

บทเรียน “ฟังก์ชันแปลงอาร์เรย์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันแปลงอาร์เรย์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันแปลงอาร์เรย์”

ใช้ array_map, array_filter และ array_reduce คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ฟังก์ชันแปลงอาร์เรย์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อาร์เรย์แบบดัชนีและแบบเชื่อมโยง
  2. อาร์เรย์หลายมิติ
  3. การเรียงลำดับและค้นหาอาร์เรย์
  4. ฟังก์ชันแปลงอาร์เรย์
← กลับไปที่ PHP Academy