แค่สงสัยว่ามีบางอย่างเช่น. = สำหรับการเพิ่มข้อความที่จุดเริ่มต้นของสตริงเช่น:
$foo =. 'bar';
ซึ่งไม่ได้ผล
แก้ไข: ตัวอย่างเดิม$foo =. $bar;
ซึ่งสามารถทำได้ด้วย$bar .= $foo;
แค่สงสัยว่ามีบางอย่างเช่น. = สำหรับการเพิ่มข้อความที่จุดเริ่มต้นของสตริงเช่น:
$foo =. 'bar';
ซึ่งไม่ได้ผล
แก้ไข: ตัวอย่างเดิม$foo =. $bar;
ซึ่งสามารถทำได้ด้วย$bar .= $foo;
$foo
การ$bar
แทน prepending ไป$bar
$foo
ผลที่ได้คือที่คล้ายกัน $foo
แต่ผมคิดว่าเขาต้องการที่จะกลายพันธุ์
คำตอบ:
ไม่ แต่คุณสามารถทำได้
$foo = "bar" . $foo
คุณสามารถสร้างฟังก์ชันของคุณเองได้เสมอ:
function prepend($string, $chunk) {
if(!empty($chunk) && isset($chunk)) {
return $string.$chunk;
}
else {
return $string;
}
}
$string
จะเป็นส่วนที่คุณต้องการนำหน้าและ$chunk
จะเป็นข้อความที่คุณต้องการให้มีบางอย่างนำหน้า
คุณสามารถพูดได้ว่าการตรวจสอบเป็นทางเลือก แต่เมื่อมีสิ่งนั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับการส่งผ่านค่าว่างโดยบังเอิญ
!empty
เสมอก็isset
ไม่จำเป็นต้องตรวจสอบซ้ำ นอกจากนี้เนื่องจาก$chunk
เป็นพารามิเตอร์ที่จำเป็นของฟังก์ชันจึงจำเป็นต้องส่งผ่านไปยังฟังก์ชันมิฉะนั้น PHP จะบ่น ซึ่งหมายความว่าเช็คนี้สามารถย่อได้ว่าif ($chunk)
(เพื่อดูว่าเป็นเท็จหรือที่เรียกว่า "ว่างเปล่า") แต่ถ้า$chunk
ไม่มีอะไรก็จะไม่มีอะไรเกิดขึ้นอยู่ดี ดังนั้นจึงย่อเนื้อหาฟังก์ชันทั้งหมดนี้return $string . $chunk
ได้ ซึ่งหมายความว่าฟังก์ชันทั้งหมดนี้ไม่จำเป็นเลยทีเดียว
$foo . $bar
มาก ฉันขอท้าให้คุณค้นหากรณีสำคัญ ๆ ว่าหน้าที่ของคุณทำอะไรแตกต่าง :)
ฉันรู้ว่าสิ่งนี้ถูกถาม / ตอบเมื่อไม่นานมานี้ แต่ให้คำตอบนี้เนื่องจากเทียบเท่ากับฟังก์ชันแม้ว่าจะไม่ใช่ตัวดำเนินการกำหนดและไม่มีใครแสดงความคิดเห็นเกี่ยวกับการใช้งานสำหรับการเชื่อมต่อสตริงทั่วไป
คุณอาจต้องการตรวจสอบการใช้กลุ่มฟังก์ชันsprintf
( เอกสารประกอบ ) สำหรับการต่อสายอักขระ ให้การฆ่าเชื้อและการใช้งานที่ดีกว่าการรวมสตริงสองสายเข้ากับตัวดำเนินการกำหนด
$foo = 'foo';
$append = sprintf('%1$s%2$s', $foo, 'bar');
var_dump($append);
/* string(6) "foobar" */
$prepend = sprintf('%1$s%2$s', 'bar', $foo);
var_dump($prepend);
/* string(6) "barfoo" */
$prependInvert = sprintf('%2$s%1$s', $foo, 'bar');
var_dump($prependInvert);
/* string(6) "barfoo" */
$wrap = sprintf('%2$s%1$s%2$s', $foo, 'bar');
var_dump($wrap);
/* string(6) "barfoobar" */
ปกติฉันจะใช้vsprintf
เนื่องจากการทำงานกับอาร์เรย์นั้นง่ายต่อการจัดการตำแหน่งค่ามากกว่าอาร์กิวเมนต์แต่ละรายการ
$vprepend = vsprintf('%2$s%1$s', array('foo', 'bar'));
var_dump($vprepend);
/* string(6) "barfoo" */
นอกจากนี้ด้วยอาร์เรย์ของค่าเราสามารถimplode
กำหนดชุดค่าที่เป็นผลลัพธ์สำหรับการต่อสายอักขระอย่างง่าย
var_dump(implode('', array('bar', 'foo')));
/* string(6) "barfoo" */
sprintf
มักใช้ในหลายภาษา sprintf
มีสถานที่และวัตถุประสงค์ในการใช้งานเมื่อใด เช่น. หล่อของค่าหลายหรือการบังคับใช้จำนวนของปัจจัยการผลิตโดยใช้sprintf
ให้คุณกับการทำงานมากขึ้นกว่าที่เรียงต่อกันง่ายเมื่อถูกต้อง ดู: 3v4l.org/8PWilแต่ไม่ควรใช้แทนการเรียงต่อกันอย่างสมบูรณ์
คุณสามารถรวมฟังก์ชันในตัวsubstr_replace
โดยที่อาร์กิวเมนต์ $ start และ $ length สามารถตั้งค่าเป็น 0 ได้ซึ่งจะนำค่า $ ทดแทนเป็น $ string ล่วงหน้าและส่งกลับผลลัพธ์ดังนี้:
function prepend(& $string, $prefix) {
$string = substr_replace($string, $prefix, 0, 0);
}
ตัวอย่างการใช้งานฟังก์ชันตัวช่วยจะเป็น:
$email_message = "Jonathan";
$appropriate_greeting = "Dear ";
prepend($email_message, $appropriate_greeting);
echo $email_message;
หากคุณเข้าร่วมการเขียนโปรแกรมขั้นตอนนั่นคือ
$string = $prefix.$string;
ในฟังก์ชั่นจะทำเคล็ดลับ
การเปลี่ยนความคิดเห็นของ Blakethepattonให้เป็นคำตอบ (ขอบคุณ) วิธีที่จะทำสิ่งนี้ให้เรียบร้อยยิ่งขึ้นสำหรับชื่อตัวแปรที่ยาวขึ้นคือการใช้การอ้างอิงตัวแปรดังนี้:
$f = &$foo; $f = "bar{$f}";
วิธีนี้จะช่วยให้คุณไม่ต้องพิมพ์คำตอบของ Eric Vหากชื่อตัวแปรเดิมของคุณยาว 12 อักขระขึ้นไป
ทางเลือกในหนึ่งบรรทัด:
$f = 'bar' . ($f = &$foo);