คำถามนี้มีคำตอบหลายข้อ แต่ฉันต้องการเพิ่มบางอย่างเพิ่มเติมเพราะเมื่อฉันใช้unset
หรือarray_diff
ฉันมีปัญหาหลายอย่างในการเล่นกับดัชนีของอาร์เรย์ใหม่เมื่อองค์ประกอบที่เฉพาะเจาะจงถูกลบออก (เพราะบันทึกดัชนีเริ่มต้น)
ฉันกลับไปที่ตัวอย่าง:
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$array_without_strawberries = array_diff($array, array('strawberry'));
หรือ
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[array_search('strawberry', $array)]);
หากคุณพิมพ์ผลคุณจะได้รับ:
foreach ($array_without_strawberries as $data) {
print_r($data);
}
ผลลัพธ์ :
> apple
> orange
> blueberry
> kiwi
แต่ดัชนีจะถูกบันทึกไว้และคุณจะสามารถเข้าถึงองค์ประกอบของคุณเช่น:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[3] > blueberry
$array_without_strawberries[4] > kiwi
ดังนั้นอาร์เรย์สุดท้ายจึงไม่ได้จัดทำดัชนีใหม่ ดังนั้นคุณต้องเพิ่มหลังจากunset
หรือarray_diff
:
$array_without_strawberries = array_values($array);
หลังจากนั้นอาร์เรย์ของคุณจะมีดัชนีปกติ:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[2] > blueberry
$array_without_strawberries[3] > kiwi
เกี่ยวข้องกับโพสต์นี้: เรย์ดัชนีอีกครั้ง
หวังว่ามันจะช่วย