Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

วิธี Re-index Array ใน PHP ให้ Key เรียงลำดับใหม่

ใช้ array_combine() ร่วม range() และ array_values() เพื่อสร้าง Key ใหม่ต่อเนื่อง สำหรับ Array ที่ Key แบบ Numeric หรือ String

ตัวอย่าง 1: Re-index Numeric Key เริ่มจาก 2

<?php
$arr = array(
    0 => "150",
    1 => "100",
    2 => "120",
    3 => "110",
    4 => "115"
);

echo "Array...\n";
foreach($arr as $key => $value) {
    echo " Key = $key, Value = $value\n";
}

// Re-index เริ่มจาก 2
$arr = array_combine(
    range(2, count($arr) + 1),
    array_values($arr)
);

echo "\nArray after re-indexing\n";
foreach($arr as $key => $value) {
    echo " Key = $key, Value = $value\n";
}
?>

ผลลัพธ์

Array...
 Key = 0, Value = 150
 Key = 1, Value = 100
 Key = 2, Value = 120
 Key = 3, Value = 110
 Key = 4, Value = 115

Array after re-indexing
 Key = 2, Value = 150
 Key = 3, Value = 100
 Key = 4, Value = 120
 Key = 5, Value = 110
 Key = 6, Value = 115

ตัวอย่าง 2: Re-index String Key (a,b,c... → b,c,d...)

<?php
$arr = array(
    "a" => "150",
    "b" => "100",
    "c" => "120",
    "d" => "110",
    "e" => "115"
);

echo "Array...\n";
foreach($arr as $key => $value) {
    echo " Key = $key, Value = $value\n";
}

// Re-index เริ่มจาก 'b'
$arr = array_combine(
    range("b", chr(count($arr) + (ord("b") - 1))),
    array_values($arr)
);

echo "\nArray after re-indexing\n";
foreach($arr as $key => $value) {
    echo " Key = $key, Value = $value\n";
}
?>

ผลลัพธ์

Array...
 Key = a, Value = 150
 Key = b, Value = 100
 Key = c, Value = 120
 Key = d, Value = 110
 Key = e, Value = 115

Array after re-indexing
 Key = b, Value = 150
 Key = c, Value = 100
 Key = d, Value = 120
 Key = e, Value = 110
 Key = f, Value = 115

คำอธิบายฟังก์ชัน

  • array_values($arr): คืนค่า Values ทั้งหมด พร้อม Re-index เป็น 0,1,2... อัตโนมัติ
  • range(start, end): สร้าง Array ของ Key ใหม่ตามช่วงที่ต้องการ
  • array_combine(keys, values): รวม Key ใหม่กับ Value เดิม

วิธีง่ายกว่า (PHP 5.4+)

// รีเซ็ต Key เป็น 0,1,2... (เก็บค่าเดิม)
$arr = array_values($arr);

// หรือใช้ ... (spread operator) PHP 7.4+
$arr = [...$arr];