PHP değişkenini dizgi değişmeziyle karıştırma


140

Bir değişkenim var $testve şöyle tanımlanır:$test = 'cheese'

Bu cheeseyşekilde yapabileceğim çıktı almak istiyorum:

echo $test . 'y'

Ama ben (ki işe yaramaz) böyle bir şeye kod basitleştirmek için tercih ederdim:

echo "$testy"

yDeğişkenden ayrıymış gibi davranılmasının bir yolu var mı?


1
tarafından $test = cheese;size demek $test = 'cheese'; (yanılmıyorsam eğer) uç nöbet yerinde ...
Outcast

Yanıtlar:


242
echo "{$test}y";

Değişkenleri doğrudan dizelerde enterpolasyon yaparken belirsizliği gidermek için kaşlı ayraç kullanabilirsiniz.

Ayrıca, bu tek tırnak işaretleri ile çalışmaz. Yani:

echo '{$test}y';

çıktı olacak

{$test}y

1
böyle bir yöntemle işlev çağrılarını satır içi yapmak da mümkün mü? Benzer bir şey"foo{implode(',', [abc])}bar"
velop

@velop Hayır. Yapı dizeleri genellikle işleme gerçekleştikten sonra yapılır. Çıktılarınızı hazırlamanın ortasındaki çağrı fonksiyonları çoğu zaman istediğiniz şey değildir. Önce işlevi çağırmayı, sonucu bir değişkene kaydetmeyi ve sonra dizeye dahil etmeyi düşünün echo "like so: $var";.
Jochem Kuijpers

bir dizeye iki fark dizesini değerlendiren üçlü bir operatör nasıl yerleştirilir?
oldboy

50

{}Değişkeninizi, bundan sonra gelenlerden ayırmak için kullanabilirsiniz :

echo "{$test}y"

Referans olarak, PHP kılavuzunun Değişken ayrıştırma - Karmaşık (kıvırcık) sözdizimi bölümüne bakabilirsiniz .


Teşekkürler. Dizeleri manuel okumaya çalıştım ama tam olarak ne sonra aradığını bulmak için aradığını emin değildi.
Matt McDonald

2
Hoş geldiniz :-) Evet, doğru bölümü bulmak her zaman kolay değil, aradığınızı gerçekten bilmiyorsanız ^^
Pascal MARTIN

{} İçine girdikten sonra, yalnızca {$ x-> y [3]} gibi değişken adlarını değil, ifadeleri kullanabileceğinizi belirtmek gerekir.
TextGeek

3

Misal:

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

Çıktı verecektir:

peynirli

Tam olarak aradığınız şey bu.


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

print $bucket;

verim:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.