2012-04-05 27 views
7

Có cách nào để phát nổ một chuỗi thành các biến ví dụ nhưnổ chuỗi vào biến

some_function($min, $max, "3, 20"); 

mà $ min được gán giá trị 3 và $ max được gán giá trị 20.

Tôi biết tôi có thể chỉ cần sử dụng

$data = explode("3, 20"); 

chỉ cần tự hỏi liệu có cách nào khác không.

Trả lời

17

Cấu trúc ngôn ngữ của PHP list() có thể thực hiện nhiều nhiệm vụ cho các biến (hoặc thậm chí các khóa mảng khác) bằng cách gán một mảng.

list($min, $max) = explode(",", "3,20"); 

Tuy nhiên, bạn vẫn sẽ cần phải áp dụng một trim() cho các biến của bạn vì giá trị $max sẽ có một không gian hàng đầu, hoặc thay thế explode() với preg_split('/\s*,\s*/', $string) để tách nó trên dấu phẩy và khoảng trắng xung quanh.

Lưu ý: Sử dụng thận trọng với list() để đảm bảo rằng mảng bạn đang gán có cùng số thành phần là list() có các biến. Chúng được gán từ phải sang trái trong PHP 5.x, không phải từ trái sang phải, vì vậy nếu bạn tình cờ ghi đè một biến ở bên trái với nội dung ban đầu của nó ở bên phải, bạn có thể nhận được kết quả không mong muốn. Chi tiết này được mô tả chi tiết với các ví dụ in the PHP docs.

Cập nhật cho PHP 7: PHP 7 thay đổi hành vi để phân công như vậy list() đối số được chỉ định từ trái sang phải

+0

Về mặt kỹ thuật mà là * ngôn ngữ cấu trúc * của 'list()'. Nhưng +1. – DaveRandom

+2

@DaveRandom Tôi không nói 'list()' là một hàm, tôi đã nói đó là hàm của hàm 'list()'. Tinh tế, nhưng tôi sẽ làm rõ anyway :) –

+0

Ah, touché ... ;-) – DaveRandom

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