Câu hỏi này có một số câu trả lời nhưng tôi muốn thêm một số câu hỏi vì khi tôi sử dụng unset
hoặc array_diff
tôi gặp một số vấn đề khi chơi với các chỉ mục của mảng mới khi phần tử cụ thể bị xóa (vì chỉ mục ban đầu được lưu)
Tôi lấy lại ví dụ:
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$array_without_strawberries = array_diff($array, array('strawberry'));
hoặc là
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[array_search('strawberry', $array)]);
Nếu bạn in kết quả, bạn sẽ nhận được:
foreach ($array_without_strawberries as $data) {
print_r($data);
}
Kết quả :
> apple
> orange
> blueberry
> kiwi
Nhưng các chỉ mục sẽ được lưu và do đó bạn sẽ truy cập vào phần tử của mình như:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[3] > blueberry
$array_without_strawberries[4] > kiwi
Và do đó, mảng cuối cùng không được lập chỉ mục lại. Vì vậy, bạn cần thêm sau unset
hoặc array_diff
:
$array_without_strawberries = array_values($array);
Sau đó, mảng của bạn sẽ có một chỉ mục bình thường:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[2] > blueberry
$array_without_strawberries[3] > kiwi
Liên quan đến bài đăng này: Re-Index Array
Hy vọng nó sẽ giúp