วิธีการรวมสองสายเข้าด้วยกันใน PHP?


140

จริงๆแล้วฉันไม่รู้จะอธิบายสิ่งที่ฉันต้องการ แต่ฉันจะแสดงให้คุณเห็น:

ตัวอย่างเช่น:

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

ฉันควรทำอย่างไร (หรือกระบวนการ) เพื่อให้ผล $ คือการรวมกันของ$data1และ$data2?

ผลลัพธ์ที่ต้องการ:

$result = "the color is red";

13
สิ่งนี้เรียกว่า "string concatenation" และไม่ควรเกินความ+เป็นตัวเลข กรุณาเริ่มต้นด้วยหนังสือ / บทช่วยสอนและทำความคุ้นเคยกับผู้ให้บริการพื้นฐานในภาษา

1
มีหลายวิธีที่จะทำ หากคุณเห็นคำตอบคุณสามารถตรวจสอบได้ว่า แต่ใช้วิธีที่ง่ายที่สุด เช่น $ result = "$ data1 $ data2"; แค่นั้นแหละ. หรือ $ result = $ data1. $ data2;
jewelhuq

1
@Machavity คุณสามารถเพิ่มระดับการป้องกันได้อย่างน่าอัศจรรย์เพื่อให้โพสต์ซ้ำซ้อนไม่ซ้อนขึ้นในหน้านี้หรือไม่?
mickmackusa

คำตอบ:


206
$result = $data1 . $data2;

สิ่งนี้เรียกว่าการต่อสตริง ตัวอย่างของคุณไม่มีที่ว่างดังนั้นคุณจะต้อง:

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

85

มีหลายวิธีในการเชื่อมสองสายเข้าด้วยกัน

ใช้ตัวดำเนินการเรียงต่อกัน.(และ.=)

ใน PHP .เป็นตัวดำเนินการเรียงต่อกันซึ่งส่งกลับการเรียงต่อกันของด้านขวาและด้านซ้ายของอาร์กิวเมนต์

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

หากคุณต้องการผนวกสตริงไปยังสตริงอื่นคุณจะต้องใช้.=โอเปอเรเตอร์:

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

สตริงไวยากรณ์ซับซ้อน (หยิก) / สตริงคำพูดคู่

ในตัวแปร PHP ที่มีอยู่ในสตริงที่ยกมาสองครั้งจะถูกสอดแทรก (เช่นค่าของพวกเขาคือ "สลับออก" สำหรับตัวแปร) ซึ่งหมายความว่าคุณสามารถวางตัวแปรแทนที่สตริงและเพียงแค่ใส่ช่องว่างระหว่างพวกเขา วงเล็บปีกกาทำให้ชัดเจนว่าตัวแปรอยู่ที่ไหน

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

หมายเหตุ: สิ่งนี้จะทำงานโดยไม่มีเครื่องหมายวงเล็บในกรณีของคุณ:

$result = "$data1 $data2";

นอกจากนี้คุณยังสามารถเชื่อมต่อค่าอาร์เรย์ภายในสตริง:

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

ใช้sprintf()หรือprintf()

sprintf()ช่วยให้เราสามารถจัดรูปแบบสตริงโดยใช้ตัวเลือกการจัดรูปแบบที่มีประสิทธิภาพ มันเกินความจริงสำหรับการต่อข้อมูลแบบง่าย ๆ แต่มันมีประโยชน์เมื่อคุณมีสตริงที่ซับซ้อนและ / หรือต้องการทำการจัดรูปแบบของข้อมูลเช่นกัน

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

printf() ทำสิ่งเดียวกัน แต่จะแสดงผลลัพธ์ทันที

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

Heredoc

Heredocsยังสามารถใช้เพื่อรวมตัวแปรเข้ากับสตริง

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

ใช้,กับecho()

ใช้งานได้เฉพาะเมื่อสะท้อนเนื้อหาและไม่ได้กำหนดให้กับตัวแปร แต่คุณสามารถใช้เครื่องหมายจุลภาคเพื่อแยกรายการของนิพจน์สำหรับ PHP เพื่อสะท้อนและใช้สตริงที่มีช่องว่างหนึ่งช่องเป็นหนึ่งในนิพจน์เหล่านั้น:

echo $data1, ' ', $data2;

21

ไม่มีใครพูดถึงเรื่องนี้ แต่มีความเป็นไปได้อื่น ๆ ฉันใช้มันสำหรับการค้นหา sql ขนาดใหญ่ คุณสามารถใช้. = operator :)

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

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

"ฉันใช้มันเพื่อการสืบค้น sql ขนาดใหญ่" - โปรดทราบว่านี่เป็นวิธีทั่วไปในการรับen.wikipedia.org/wiki/SQL_inject
การลดกิจกรรม

วิธีการเรียงสตริงวิธีนี้หรือวิธีอื่น ๆ จะทำให้ sql injection ในแบบสอบถามแบบมีพารามิเตอร์ได้อย่างไร
codelame

การสร้างคิวรี SQL ทั้งหมดด้วยตนเอง (อย่างน้อยแนะนำโดย "สำหรับเคียวรี SQL ขนาดใหญ่") ไม่เป็นไร การเตรียมพารามิเตอร์เพียงอย่างเดียวแบบสอบถามทั้งหมดไม่ควรปลอดภัยจากความเสี่ยงด้านความปลอดภัยนี้
ลดกิจกรรม

19

ทำการต่อเข้ากับ.ผู้ประกอบการ:

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

หรือใช้การแก้ไขสตริง:

$result = "$data1 $data2";

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

เป็นเรื่องทั่วไปมากขึ้น


1
นี้มีประโยชน์มากในกรณีที่คุณต้องการที่จะทำให้รายการที่คั่นด้วยในขณะที่มันตรวจสอบว่า vars มีค่าใด ๆ$email_to = implode(', ', array($addr1, $addr2, addr3));ไม่จำเป็นต้องให้if($addr != '')ฯลฯ
Aba

4
อย่าเลือกฟังก์ชั่นอาร์เรย์เว้นแต่คุณจะต้อง เพราะฟังก์ชั่นอาร์เรย์ช้ากว่าตัวดำเนินการ นอกจากนี้; พวกเขาใช้ ram มากกว่า
MERT DOĞAN


6

คุณสามารถลองบรรทัดของรหัสต่อไปนี้

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

ฉันอยากจะใช้เครื่องหมายคำพูดเดี่ยวแทนที่จะเป็นเครื่องหมายคำพูดคู่ ลิงก์
Jack

5

มีการใช้เครื่องหมายมหัพภาคเพื่อเชื่อมสตริง ตัวอย่างง่าย ๆ ในการเปลี่ยนตัวแปรสตริงสองตัวเป็นตัวแปรเดียว:

$full = $part1 . $part2;

ในตัวอย่างของคุณคุณต้องการทำ:

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

คุณจะสังเกตเห็นว่าฉันเพิ่มสตริงหนึ่งช่องว่างระหว่างตัวแปรสองตัว นี่เป็นเพราะต้นฉบับของคุณ$data1ไม่ได้ลงท้ายด้วยช่องว่าง ถ้าคุณได้รวมพวกเขาโดยไม่ได้ของตัวแปรจะจบลงมองเช่น$resultthe color isred


5

คุณสามารถทำได้โดยใช้ PHP:

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

สิ่งนี้จะรวมสองสายและ putput จะเป็น: "สีแดง!"


1
ค่าอินพุตที่สร้างขึ้นของคุณไม่ได้แสดงถึงสตริงอินพุตของ OP และคุณกำลังแก้ปัญหาที่ได้รับการระบุไว้เมื่อปีที่แล้ว นี่ไม่ใช่คำถามจาวาสคริปต์ดังนั้นคำแนะนำที่ไม่เกี่ยวข้อง โพสต์นี้ไม่เพิ่มมูลค่าให้กับหน้า
mickmackusa

@mickmackusa ฉันข้อความอัปเดตตกลงคุณมีสิทธิ แต่ฉันให้ js ตอบที่นี่เพราะนี่เป็นคำถามพื้นฐานมากเพื่อให้ผู้ใช้สามารถเรียนรู้ที่แตกต่างกัน
sunil

1
การอัปเดตของคุณไม่ได้ใช้ข้อความของ OP ไม่ได้ให้บริการโซลูชั่น javascript สำหรับคำถาม PHP คำตอบนี้มีรูปแบบไม่ดีและไม่เพิ่มมูลค่าให้กับหน้า
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

ผลลัพธ์:

my name is keyur

9
ยินดีต้อนรับสู่ StackOverflow มันดีถ้าคุณตอบคำถาม อย่างไรก็ตามถ้าคุณทำโปรดจัดรูปแบบให้ถูกต้อง นอกจากนี้คำตอบของคุณได้รับแล้ว มันเพิ่มมูลค่าเพิ่มเติมให้กับโพสต์สี่ปีนี้ได้อย่างไร
T3 H40

6
นี่เป็นเพียงการทำซ้ำคำตอบที่มีอยู่
ปาง

4
$result = $data1 . $data2;

ลองนี้


5
นี่ไม่ใช่คำตอบที่ถูกต้อง มันส่งผลให้ "สี isred" นอกจากนี้คำตอบของคุณยังซ้ำซ้อนกับคำตอบของใครบางคนโพสต์เมื่อหลายปีก่อน โหวตลง
Jason Liu


0

ฉันไม่ชัดเจนว่าข้อกำหนดของคุณคืออะไร แต่โดยพื้นฐานแล้วคุณสามารถแยกตัวแปรทั้งสองออกจากกันและหลังจากนั้นก็รวมเข้าด้วยกัน

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

$result=$data1.$data2;

โดยการทำเช่นนั้นคุณสามารถประกาศ $ data2 เป็นระดับสากลเพื่อให้คุณสามารถเปลี่ยนค่าในระหว่างการดำเนินการตัวอย่างเช่นมันสามารถได้รับคำตอบ "สีแดง" จากช่องทำเครื่องหมาย


0

รวมสองสายเข้าด้วยกันใน PHP?

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

2
คำตอบนี้ไม่ได้ให้คำตอบใด ๆ ที่ยังไม่ได้ให้มาและไม่มีคำอธิบายว่าทำไมหรือทำงานอย่างไร
John Conde

-1

1. สร้างสตริง (ช่องว่างระหว่างแต่ละสตริง)

ตัวอย่างโค้ด:

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

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

ผลลัพธ์: SachinTendulkar

2. สร้างสตริงที่มีพื้นที่ว่าง

ตัวอย่างโค้ด:

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

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

ผลลัพธ์: Sachin Tendulkar

  1. เชื่อมสตริงโดยใช้ฟังก์ชั่น printf

ตัวอย่างโค้ด:

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

เอาท์พุท:
SachinTendulkar
Sachin Tendulkar


4
ข้อเสนอคำตอบนี้มีอะไรที่ยังไม่ได้จัดทำโดยคำตอบอื่น ๆ
John Conde

@rashedcs ใช้งานได้ดีสำหรับฉัน !! 🏏
IPSDSILVA

-1

ฉันเชื่อว่าวิธีที่มีประสิทธิภาพที่สุดคือ:

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

หากคุณต้องการปรับใช้การแปลคุณอาจทำสิ่งนี้:

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

มันช้าลงเล็กน้อย แต่ก็ไม่ถือว่ากฎไวยากรณ์


-3

ลองนี้เราสามารถผนวกสตริงในสัญลักษณ์ php พร้อมด้วยจุด (.)

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

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

1
คำตอบนี้ไม่ได้มีคำตอบอื่น ๆ ที่ยังไม่ได้ให้มา
John Conde
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.