การผสมตัวแปร PHP กับตัวอักษรสตริง


140

ว่าฉันมีตัวแปร$testและมันถูกกำหนดเป็น:$test = 'cheese'

ฉันต้องการส่งออกcheeseyซึ่งฉันสามารถทำเช่นนี้:

echo $test . 'y'

แต่ฉันต้องการลดความซับซ้อนของรหัสให้เป็นอย่างนี้ (ซึ่งจะไม่ทำงาน):

echo "$testy"

มีวิธีที่จะได้yรับการปฏิบัติราวกับว่ามันแยกจากตัวแปรหรือไม่?


1
โดย$test = cheese;ที่คุณหมาย$test = 'cheese'; ในตอนท้ายโพสต์ของคุณ (ถ้าผมไม่ผิด) ...
จัณฑาล

คำตอบ:


242
echo "{$test}y";

คุณสามารถใช้เครื่องมือจัดฟันเพื่อลบความกำกวมเมื่อทำการแก้ไขตัวแปรในสตริงโดยตรง

นอกจากนี้ยังใช้ไม่ได้กับการเสนอราคาเดียว ดังนั้น:

echo '{$test}y';

จะส่งออก

{$test}y

1
เป็นไปได้ไหมที่จะสามารถเรียกฟังก์ชั่นอินไลน์ด้วยวิธีการดังกล่าวได้? สิ่งที่คล้ายกับ"foo{implode(',', [abc])}bar"
velop

@velop Nope สตริงการสร้างมักจะทำหลังจากการประมวลผลเกิดขึ้น ฟังก์ชั่นการโทรในช่วงกลางของการเตรียมการส่งออกของคุณมันมักจะไม่ใช่สิ่งที่คุณต้องการ พิจารณาการเรียกใช้ฟังก์ชันก่อนโดยเก็บผลลัพธ์ไว้ในตัวแปรแล้วคุณสามารถรวมไว้ในสตริงecho "like so: $var";ได้
Jochem Kuijpers

วิธีการฝังตัวดำเนินการประกอบไปด้วยที่ประเมินถึงสองสาย diff ในสตริง?
oldboy

50

คุณสามารถใช้จัด{}ตัวแปรของคุณเพื่อแยกตัวแปรออกจากสิ่งต่อไปนี้:

echo "{$test}y"

ตามการอ้างอิงคุณสามารถดูที่ส่วนไวยากรณ์แยกวิเคราะห์ - ซับซ้อน (หยิก)ของคู่มือ PHP


ขอบคุณ ฉันลองอ่านคู่มือการใช้สตริง แต่ไม่แน่ใจว่าสิ่งที่ฉันกำลังมองหาเพื่อค้นหาสิ่งที่ฉันเป็นหลังจาก
Matt McDonald

2
คุณยินดีต้อนรับ :-) ใช่ไม่ใช่เรื่องง่ายที่จะหาหัวข้อที่ถูกต้องเสมอเมื่อคุณไม่รู้ว่าคุณกำลังค้นหาอะไร ^^
Pascal MARTIN

น่าสังเกตว่าเมื่อคุณอยู่ใน {} คุณสามารถใช้นิพจน์ไม่ใช่แค่ชื่อตัวแปรเช่น {$ x-> y [3]} หรืออะไรก็ตาม
TextGeek

3

ตัวอย่าง:

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

มันจะออก:

วิเศษ

มันเป็นสิ่งที่คุณกำลังมองหา


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

print $bucket;

อัตราผลตอบแทน:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.