2009-10-15 38 views

Trả lời

217

array_slice trả về một lát một mảng

$sliced_array = array_slice($array, 0, 5) 

là mã bạn muốn trong trường hợp của bạn để trả lại năm yếu tố đầu tiên

+0

nhưng điều này sẽ không hoạt động với mảng kết hợp. các phím bị mất. – ESCOBAR

+3

@ESCOBAR: mảng kết hợp không nhất thiết phải có thứ tự, chúng chỉ ánh xạ khóa tới giá trị; vì vậy "các giá trị từ 3 đến 7" không thực sự hợp lý ... – knittl

+0

ngay, nhưng trong trường hợp này, nó không liên quan đến thứ tự. nó chỉ là về 5 mục đầu tiên. và bạn không thể sử dụng array_slice ở đây. – ESCOBAR

6

array_splice - Hủy bỏ một phần của mảng và thay thế bằng cái gì khác:

$input = array(1, 2, 3, 4, 5, 6); 
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5) 

Từ PHP dẫn sử dụng:

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement]]) 

Nếu chiều dài được bỏ qua, loại bỏ tất cả mọi thứ từ bù đắp đến cùng của mảng. Nếu độ dài được xác định và là số dương, thì nhiều phần tử sẽ bị xóa. Nếu độ dài được xác định và âm thì phần cuối của phần bị loại bỏ sẽ là nhiều phần tử từ phần cuối của mảng. Mẹo: để loại bỏ tất cả mọi thứ từ bù đắp đến cuối mảng khi thay thế cũng được chỉ định, sử dụng đếm ($ đầu vào) cho chiều dài.

+0

cú pháp trả về 5 phần tử đầu tiên là mảng_splice ($ input, 5) – aland

+0

Cảm ơn, đã được sửa ngay bây giờ. –

+0

@AndrejsCainikovs Theo php.net, "Nếu độ dài bị bỏ qua, thì trình tự sẽ có mọi thứ từ bù đắp cho đến khi kết thúc mảng." Văn bản in đậm của người trả lời cho biết chính xác điều ngược lại. – Kalko

1

Nếu bạn chỉ muốn đầu ra 5 yếu tố đầu tiên, bạn nên viết cái gì đó như:

<?php 

    if (!empty ($an_array)) { 

    $min = min (count ($an_array), 5); 

    $i = 0; 

    foreach ($value in $an_array) { 

     echo $value; 
     $i++; 
     if ($i == $min) break; 

    } 

    } 

?> 

Nếu bạn muốn viết một hàm trả về một phần của mảng, bạn nên sử dụng array_slice:

<?php 

    function GetElements($an_array, $elements) { 
    return array_slice($an_array, 0, $elements); 
    } 

?> 
0

Bạn có thể sử dụng hàm array_slice, nhưng bạn có sử dụng các giá trị khác không? hoặc chỉ 5 người đầu tiên? bởi vì nếu bạn chỉ sử dụng 5 đầu tiên, bạn có thể sử dụng LIMIT trên SQL.

-3

Một cách hướng đối tượng khác sẽ là cung cấp phạm vi cho phương thứC# []. Ví dụ:

Giả sử bạn muốn 3 mục đầu tiên từ một mảng.

số = [1,2,3,4,5,6]

số [0..2] # => [1,2,3]

Giả sử bạn muốn x đầu tiên các mục từ một mảng.

số [0..x-1]

Những điều tuyệt vời về phương pháp này là nếu bạn yêu cầu cho các hạng mục hơn mảng có, nó chỉ đơn giản trả về toàn bộ mảng.

số [0..100] # => [1,2,3,4,5,6]

+3

Nhưng php không hỗ trợ dải ô. Bạn có chắc là bạn không nói về ruby ​​hay gì đó như thế không? –

+1

"Một cách hướng đối tượng hơn"? Câu trả lời này không liên quan gì đến lập trình hướng đối tượng. – Ducky

Các vấn đề liên quan