2012-01-26 42 views
19

Tôi có thể sử dụng các mục sau để lấy giá trị của mục cuối cùng của $array. Làm thế nào tôi có thể có được một tham chiếu đến mục đó?Lấy tham chiếu đến mục cuối cùng của một mảng

$last_item = end($array); 

Các mục của $array là các mảng được lập chỉ mục.

+0

http: //www.php .net/manual/en/function.end.php # 24804 –

Trả lời

35
end($array); 
$referenceToLastElement = &$array[key($array)]; 
+0

Điều đó thật thú vị. Tôi tự hỏi nếu nó sẽ thực hiện tốt hơn so với cách tiếp cận trong câu trả lời được chấp nhận. –

+1

@EmanuilRusev: Nó sẽ hoạt động tốt hơn vì nó hoạt động chính xác trên mọi mảng. – Jon

+0

Đây có phải là phương thức count() nhanh hơn không? –

-1
list($last_key,$last_value) = each(array_slice($array,-1,1,true)); 

Nỗ lực số 2?

$last_item = &$array[array_pop(array_keys($array))]; 

Điều đó cung cấp cho bạn tham chiếu biến đối với phần tử cuối cùng của mảng.

+0

Tôi không hiểu. Tôi không cần chìa khóa của phần tử cuối cùng, cũng không phải là giá trị của nó - chỉ là một tham chiếu. –

+0

Tôi không chắc tôi hiểu ý bạn là gì "chỉ là một tham chiếu". Tôi sẽ thử một lần nữa. Xem chỉnh sửa. –

2

count() sẽ cung cấp cho bạn theo chiều dài của mảng, mà bạn có thể áp dụng một số số học đơn giản để có được một tham chiếu đến phần tử cuối của mảng:

$array = array(
    array('jkl' => '456'), 
    array('abc' => '456'), 
); 
print_r($array); 
$last_item = &$array[count($array) - 1]; 
$last_item['abc'] = '123'; 
print_r($array); 
+0

Đó là loại câu trả lời mà tôi đã hy vọng. –

+0

Không sao, vui lòng trợ giúp! – leepowers

+7

Điều này sẽ chỉ hoạt động nếu mảng được lập chỉ mục với một chuỗi số nguyên không gián đoạn bắt đầu từ 0 - "lớn" nếu ". – Jon

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