PHP'de iki dizeyi nasıl birleştirebilirim?


140

Aslında ne istediğimi nasıl tanımlayacağımı bilmiyorum ama size göstereceğim:

Örneğin:

$data1 = "the color is";
$data2 = "red";

Ben $ sonuç birleşimidir böylece (veya süreç) ne yapmalıyım $data1ve $data2?

İstenen sonuç:

$result = "the color is red";

13
Buna "dize birleştirme" denir ve +sayılardan daha fazla yabancı olmamalıdır . Lütfen bir kitap / öğretici ile başlayın ve dilin temel operatörlerini tanıyın.

1
Bunu yapmanın bir çok yolu var. Cevabı görürseniz, bunu kontrol edebilirsiniz. ancak en basit olanı kullanın. örneğin $ sonuç = "$ veri1 $ veri2"; bu kadar. veya $ sonuç = $ veri1. $ veri2;
jewelhuq

1
@Machavity, gereksiz postaları bu sayfada biriktirmeyecek şekilde sihirli bir şekilde yükseltebilir misiniz?
mickmackusa

Yanıtlar:


206
$result = $data1 . $data2;

Buna dize birleştirme denir. Örneğinizin bir alanı yok, bu nedenle özellikle aşağıdakilere ihtiyacınız olacak:

$result = $data1 . ' ' . $data2;

85

İki dizeyi birlikte birleştirmenin birkaç yolu vardır.

Birleştirme işlecini .(ve .=) kullanın

PHP'de .sağ ve sol argümanlarının birleşimini döndüren birleştirme işleci

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Bir dizeyi başka bir dizeye eklemek isterseniz, .=işleci kullanırsınız :

$data1 = "the color is ";
$data1 .= "red"

Karmaşık (kıvırcık) sözdizimi / çift tırnak dizeleri

PHP'de çift tırnaklı dizelerde yer alan değişkenler enterpole edilir (yani değerleri değişken için "değiştirilir"). Bu, değişkenleri dizelerin yerine yerleştirebileceğiniz ve aralarına boşluk bırakabileceğiniz anlamına gelir. Kıvırcık parantezler değişkenlerin nerede olduğunu netleştirir.

$result = "{$data1} {$data2}";

Not: bu da sizin durumda parantez olmadan çalışır:

$result = "$data1 $data2";

Bir dizenin içindeki dizi değerlerini de birleştirebilirsiniz:

$arr1 = ['val' => 'This is a'];
$arr2 = ['val' => 'test'];
$variable = "{$arr1['val']} {$arr2['val']}";

sprintf()Veya kullanınprintf()

sprintf()güçlü biçimlendirme seçeneklerini kullanarak dizeleri biçimlendirmemize olanak tanır. Bu kadar basit birleştirme için aşırı doldurulur, ancak karmaşık bir dizeye sahip olduğunuzda ve / veya verilerin bazı biçimlendirmelerini yapmak istediğinizde kullanışlıdır.

$result = sprintf("%s %s", $data1, $data2);

printf() aynı şeyi yapar ancak çıktıyı hemen görüntüler.

printf("%s %s", $data1, $data2);
// same as
$result = sprintf("%s %s", $data1, $data2);
echo $result;

Yorumlu

Yorumlu metinler , değişkenleri bir dizgide birleştirmek için de kullanılabilir.

$result= <<<EOT
$data1 $data2
EOT;

A ,ile kullanınecho()

Bu yalnızca içeriği yankılarken ve bir değişkene atamadığında işe yarar. Ancak PHP'nin yankılanması ve bu ifadelerden biri olarak bir boşluk içeren bir dize kullanması için bir ifade listesini ayırmak için virgül kullanabilirsiniz:

echo $data1, ' ', $data2;

21

Kimse bundan bahsetmedi ama başka olasılıklar da var. Bunu büyük sql sorguları için kullanıyorum. Kullanabilirsiniz. = Operatör :)

$string = "the color is ";
$string .= "red";

echo $string; // gives: the color is red

"Büyük sql sorguları için kullanıyorum." - en.wikipedia.org/wiki/SQL_injection
etkinliği azaltmak

nasıl tam olarak bu veya başka bir şekilde dize birleştirmek bana parametreli sorgu benim sql enjeksiyon verecektir?
codelame

Tüm SQL sorgularını el ile oluşturmak (en azından "büyük sql sorguları için" önerilir) sorun değildir. Sadece parametreler hazırlanırken, sorguların tamamı bu özel güvenlik riskinden korunmamalıdır.
aktivitenin azaltılması

19

Bunları .operatörle birleştirin:

$result = $data1 . " " . $data2;

Veya dize enterpolasyonu kullanın:

$result = "$data1 $data2";

11
$result = implode(' ', array($data1, $data2));

daha geneldir.


1
vars herhangi bir değer varsa bu onu çek olarak ayrılmış bir listesini yapmak istediğiniz bir durumda çok faydalıdır $email_to = implode(', ', array($addr1, $addr2, addr3));gerek if($addr != '')vs
Aba

4
Zorunlu olmadıkça dizi işlevlerini seçmeyin. Çünkü dizi, operatörlerden daha yavaş çalışır. Bunlara ek olarak; daha fazla koç kullanırlar.
MERT DOĞAN

9

Mevcut başka bir form şudur:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";

6

Aşağıdaki kod satırını deneyebilirsiniz

$result = $data1." ".$data2;

Çift tırnak yerine tek tırnak kullanmayı tercih ederim. bağlantı
Jack

5

Dizeleri birleştirmek için bir nokta kullanılır. İki dize değişkenini tek bir değişkene dönüştürmek için basit bir örnek:

$full = $part1 . $part2;

Örneğinizde şunları yapmak istersiniz:

$result = $data1 . ' ' . $data2;

İki değişken arasına bir boşluk dizesi eklediğimi fark edeceksiniz. Bunun nedeni, orijinalinizin $data1bir boşlukla bitmemesidir. Onları onsuz bir araya getirseydiniz, $resultdeğişkeniniz neye benzeyecektir the color isred.


5

PHP kullanarak bunu yapabilirsiniz:

$txt1 = "the color is";
$txt2 = " red!";
echo $txt1.$txt2;

Bu iki dizeyi birleştirecek ve putput şöyle olacaktır: "renk kırmızı!".


1
Üretilen giriş değerleriniz OP'nin giriş dizesini temsil etmez ve YEARS olarak daha önce belirtilen çözümleri tekrarlarsınız. Bu bir javascript sorusu değildir, bu nedenle tavsiyenin alakasız olması. Bu gönderi sayfaya değer katmıyor.
mickmackusa

@mickmackusa, tamam Metni güncelledim, haklısın ama burada js cevabı verdim çünkü bu çok temel bir soru, böylece kullanıcı farkı öğrenebilir
sunil

1
Güncellemeniz OP metnini KULLANMADI. Php sorularına javascript çözümleri vermeyin. Bu yanıt kötü biçimlendirilmiş ve sayfaya değer katmıyor.
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

sonuç:

my name is keyur

9
StackOverflow'a hoş geldiniz. Sorulara cevap verirseniz hoş olur. Ancak, bunu yaparsanız, lütfen uygun şekilde biçimlendirin. Dahası, cevabınız zaten verildi. Bu dört yaşındaki gönderiye nasıl artı değer katıyor?
T3 H40

6
Bu sadece mevcut cevapların tekrarıdır.
Pang

4
$result = $data1 . $data2;

bunu dene


5
Bu doğru cevap değil. "renk isred" ile sonuçlanır. Ayrıca, cevabınız yıllar önce gönderilen birinden de çoğaltılır. Down oy kullandı.
Jason Liu


0

Gereksinimlerinizin ne olduğu konusunda tam olarak net değilim, ancak temel olarak iki değişkeni ayrı olarak tanımlayabilir ve daha sonra bunları birleştirebilirsiniz.

$data1="The colour is ";
$data2="red";

$result=$data1.$data2;

Bunu yaparak $ data2 değerini global bir seviye olarak bile bildirebilirsiniz, böylece yürütme sırasında değerini değiştirebilirsiniz, örneğin bir onay kutusundan "kırmızı" yanıtı alabilir.


0

PHP iki dizeyi birleştirmek?

$result = $data1 . ' ' . $data2;

2
Bu yanıt, diğer yanıtların henüz vermediği hiçbir şey sunmaz ve bunun neden veya nasıl çalıştığına dair hiçbir açıklama sunmaz.
John Conde

-1

1. dizeyi birleştirin (her dize arasındaki boşluk)

Kod Parçacığı:

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1.$txt2 ;
 echo  $result. "\n";
 ?>  

Çıktı: SachinTendulkar

2. Alanın bulunduğu dizeyi birleştirin

Kod Parçacığı:

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1." ".$txt2; 
 echo  $result. "\n";
?>  

Çıktı: Sachin Tendulkar

  1. Printf işlevini kullanarak dizeyi bitiştirin.

Kod Parçacığı:

  <?php
 $data1 = "Sachin";
 $data2 = "Tendulkar";
 printf("%s%s\n",$data1, $data2);
 printf("%s %s\n",$data1, $data2); 
?>

Çıktı:
SachinTendulkar
Sachin Tendulkar


4
Bu cevap, diğer cevaplar tarafından henüz verilmemiş olan ne sunuyor?
John Conde

@rashedcs Benim için harika çalışıyor !! 🏏
IPSDSILVA

-1

En performanslı yolun olduğuna inanıyorum:

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Yerelleştirmeyi uygulamak istiyorsanız, bunun gibi bir şey yapabilirsiniz:

$translationText = "the color is %s";
$translationRed  = "red";
$result = sprintf($translationText, $translationRed);

Biraz daha yavaş, ama dilbilgisi kuralları kabul etmiyor.


-3

Bunu deneyin, nokta (.) Simgesiyle php dizesini ekleyebiliriz

$data1 = "the color is";
$data2 = "red";

echo $data1.$data2; //the color isred
echo $data1." ".$data2; // the color is red (we have appended space)

1
Bu cevap diğer cevapların henüz vermediği hiçbir şey sunmuyor.
John Conde
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.