Trộn một biến PHP với một chuỗi ký tự


140

Nói rằng tôi có một biến $testvà nó được định nghĩa là:$test = 'cheese'

Tôi muốn đầu ra cheesey, mà tôi có thể làm như thế này:

echo $test . 'y'

Nhưng tôi muốn đơn giản hóa mã thành một cái gì đó giống như thế này (sẽ không hoạt động):

echo "$testy"

Có cách nào để yxử lý như thể nó tách biệt với biến không?


1
bởi $test = cheese;bạn có nghĩa là $test = 'cheese'; ở cuối bài viết của bạn (nếu tôi không sai) ...
Outcast

Câu trả lời:


242
echo "{$test}y";

Bạn có thể sử dụng dấu ngoặc nhọn để loại bỏ sự mơ hồ khi nội suy các biến trực tiếp trong chuỗi.

Ngoài ra, điều này không hoạt động với dấu ngoặc đơn. Vì thế:

echo '{$test}y';

sẽ xuất

{$test}y

1
cũng có thể gọi hàm nội tuyến với một phương thức như vậy? Một cái gì đó tương tự"foo{implode(',', [abc])}bar"
velop

@velop Không. Xây dựng chuỗi thường được thực hiện sau khi xử lý đã xảy ra. Gọi các chức năng ở giữa chuẩn bị đầu ra của bạn thường không phải là những gì bạn muốn. Trước tiên hãy xem xét việc gọi hàm, lưu trữ kết quả trong một biến và sau đó bạn có thể đưa nó vào chuỗi echo "like so: $var";.
Joool Kuijpers

Làm thế nào để nhúng một toán tử ternary ước tính thành hai chuỗi diff trong một chuỗi?
oldboy

50

Bạn có thể sử dụng {}arround biến của mình, để tách nó khỏi những gì sau:

echo "{$test}y"

Để tham khảo, bạn có thể xem phần cú pháp Biến phân tích - phức tạp (xoăn) của hướng dẫn sử dụng PHP.


Cảm ơn. Tôi đã thử đọc hướng dẫn sử dụng chuỗi nhưng không chắc chắn chính xác những gì tôi đang tìm kiếm để tìm kiếm nó cho những gì tôi đang theo dõi.
Matt McDonald

2
Bạn được chào đón :-) Vâng, không phải lúc nào cũng dễ dàng tìm đúng phần, khi bạn không thực sự biết bạn đang tìm kiếm điều gì ^^
Pascal MARTIN

Đáng lưu ý rằng một khi bạn ở trong {}, bạn có thể sử dụng các biểu thức, không chỉ các tên biến, chẳng hạn như {$ x-> y [3]} hoặc bất cứ điều gì.
TextGeek

3

Thí dụ:

$test = "chees";
"${test}y";

Nó sẽ xuất ra:

cheesy

Nó chính xác là những gì bạn đang tìm kiếm.


-3
$bucket = '$node->' . $fieldname . "['und'][0]['value'] = " . '$form_state' . "['values']['" . $fieldname . "']";

print $bucket;

sản lượng:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.