Làm thế nào để bạn cắt bớt một mảng PHP một cách hiệu quả nhất?PHP cách cắt ngắn một mảng
Tôi có nên sử dụng array_splice không?
Làm thế nào để bạn cắt bớt một mảng PHP một cách hiệu quả nhất?PHP cách cắt ngắn một mảng
Tôi có nên sử dụng array_splice không?
Bạn có thể sử dụng các chức năng có nguồn gốc từ loại bỏ các phần tử mảng:
Với kiến thức này thực hiện chức năng của riêng bạn
function array_truncate(array $array, $left, $right) {
$array = array_slice($array, $left, count($array) - $left);
$array = array_slice($array, 0, count($array) - $right);
return $array;
}
Peter bạn có thể giải thích các tham số '$ left' và' $ right' cho các thông số –
@RahilWazir cắt x '$ left' từ trái, cắt x' $ right' từ bên phải – Peter
Có, trừ khi bạn muốn lặp qua mảng và unset() các yếu tố không mong muốn.
... và cập nhật các phím mảng nếu chúng là số. – FMaz008
Lưu ý, trong một foreach bạn sẽ phải sử dụng tham chiếu chỉ mục mảng đầy đủ vì foreach sử dụng một bản sao của mảng. 'foreach ($ array là $ key => $ value) {unset ($ array [$ key]}' không 'foreach ($ array là $ key => $ value) {unset ($ value)}'. –
Bạn có thể sử dụng một trong các chức năng này:
function array_truncate(&$arr)
{
while(count($arr) > 0) array_pop($arr);
}
// OR (faster)
function array_truncate2(&$arr)
{
array_splice($arr, 0, count($arr));
}
Cách sử dụng:
$data2 = array("John" => "Doe", "Alice" => "Bob");
array_truncate($data2);
// OR
array_truncate2($data2);
'while'- vòng lặp có lẽ sẽ là cách không hiệu quả nhất để cắt ngắn một mảng :-) –
@AlexanderFarber tất nhiên nó là, đó là lý do tại sao tôi nói (trong nhận xét) rằng khác là nhanh hơn. Tôi đưa vào phương thức array_pop để hiển thị một phương thức mà bạn có tùy chọn để làm điều gì đó với phần tử trước khi loại bỏ nó. –
này functi trên nên hoạt động
function truncateArray($truncateAt, $arr) {
array_splice($arr, $truncateAt, (count($arr) - $truncateAt));
return $arr;
}
Bạn muốn đạt được điều gì? Cung cấp một số ví dụ. – hsz
Tại sao sự ác cảm đối với 'mảng_splice'? – Clive
Tôi đọc kết quả tham gia SQL và cần đặt lại một mảng kết hợp mỗi lần lặp thứ 3. Tôi nghĩ số có thể được sử dụng ở đây, giống như trong một số ngôn ngữ mà bạn đặt chiều dài mảng thành 0 ... –