ใช้ 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];