2012-01-11 39 views
23

thể trùng lặp:
PHP syntax for dereferencing function resultGọi PHP phát nổ và truy cập phần tử đầu tiên?

Tôi có một chuỗi, trông giống như 1234 # 5678. Bây giờ tôi gọi điện thoại này:

$last = explode("#", "1234#5678")[1] 

Không hoạt động, có một số lỗi cú pháp ... nhưng ở đâu? Những gì tôi mong đợi là 5678 trong $last. Đây có phải là không làm việc trong PHP?

+3

Điều này là không thể trong PHP. –

+4

Bạn sẽ có thể làm điều này (Array Dereferencing) trong PHP 5.4, không phải trong 5.3 hiện tại –

Trả lời

26

Không thể thực hiện cuộc hội thảo về mảng trong các phiên bản PHP hiện tại (không may). Nhưng bạn có thể sử dụng list[docs] để trực tiếp giao cho các phần tử mảng để biến:

list($first, $last) = explode("#", "1234#5678"); 

CẬP NHẬT

Kể từ PHP 5.4 (phát hành 01-Mar-2012) nó hỗ trợ array dereferencing.

+3

và nếu bạn có nhiều giá trị trong chuỗi thì bạn có thể sử dụng $ last = end (explode ('#', $ string)); –

+0

Thay thế cho danh sách là 'list (, $ last) = ....'. Sau đó, bạn sẽ không có biến đầu tiên treo khi bạn không cần nó. –

8

Rất có thể PHP bị nhầm lẫn bởi cú pháp. Chỉ cần gán kết quả của explode đến một biến mảng và sau đó sử dụng chỉ mục trên nó:

$arr = explode("#", "1234#5678"); 
$last = $arr[1]; 
+1

Wow, mà hút: D ... ok, tốt tôi biết bây giờ. – EOB

+0

snap! dammit, bạn giành chiến thắng :) –

3

PHP có thể là một mờ chút. Bạn có thể cần phải thực hiện điều này trên hai dòng:

$a = explode("#", "1234#5678"); 
$last = $a[1]; 
5

Bạn không thể làm điều này:

explode("#", "1234#5678")[1] 

explode là một chức năng, không phải là một mảng. Nó trả về một mảng, chắc chắn, nhưng trong PHP bạn không thể xử lý hàm như một mảng cho đến khi nó được đặt thành một mảng.

Đây là cách để làm điều đó:

$last = explode('#', '1234#5678'); 
$last = $last[1]; 
6

Dưới đây là làm thế nào để có được nó xuống một dòng:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

đâu indx là chỉ số mà bạn muốn trong mảng, trong bạn ví dụ: 1.

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