ฉัน googling แต่ไม่พบอะไรเลย
$x->func(&$string, $str1=false, $str2=false);
นั่น &
ก่อน $string
&$string
ทำอะไร?
ฉัน googling แต่ไม่พบอะไรเลย
$x->func(&$string, $str1=false, $str2=false);
นั่น &
ก่อน $string
&$string
ทำอะไร?
คุณกำลังกำหนดค่าอาร์เรย์นั้นโดยการอ้างอิง
การส่งผ่านอาร์กิวเมนต์ผ่านการอ้างอิง (&$) และโดย $ คือเมื่อคุณส่งผ่านอาร์กิวเมนต์ผ่านการอ้างอิง คุณจะทำงานกับตัวแปรดั้งเดิม หมายความว่าหากคุณเปลี่ยนมันภายในฟังก์ชันของคุณ มันก็จะถูกเปลี่ยนภายนอกเช่นกัน หากคุณส่งผ่านอาร์กิวเมนต์เป็น คัดลอก ฟังก์ชันสร้างอินสแตนซ์การคัดลอกของตัวแปรนี้ และทำงานกับสำเนานี้ ดังนั้นหากคุณเปลี่ยนในฟังก์ชัน จะไม่มีการเปลี่ยนแปลงภายนอก
อ้างอิง: http://www.php.net/manual/en/language.references.pass.php
& ระบุว่าการอ้างอิงถึงตัวแปรควรถูกส่งผ่านไปยังฟังก์ชัน แทนที่จะเป็นการลอกแบบของมัน
ในสถานการณ์นี้ หากฟังก์ชันเปลี่ยนค่าของพารามิเตอร์ ค่าของตัวแปรที่ส่งผ่านก็จะเปลี่ยนไปเช่นกัน
อย่างไรก็ตาม คุณควรคำนึงถึงสิ่งต่อไปนี้สำหรับ PHP 5:
คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่นี่: http://www.php.net/manual/en/language.references.pass.php
และมีข้อมูลมากมายที่นี่: ข้อมูลอ้างอิง — ทำอะไร สัญลักษณ์นี้หมายถึงใน PHP?
ตัวอย่างพฤติกรรมของสตริง:
function changeString( &$sTest1, $sTest2, $sTest3 ) {
$sTest1 = 'changed';
$sTest2 = 'changed';
$sTest3 = 'changed';
}
$sOuterTest1 = 'original';
$sOuterTest2 = 'original';
$sOuterTest3 = 'original';
changeString( $sOuterTest1, $sOuterTest2, &$sOuterTest3 );
echo( "sOuterTest1 is $sOuterTest1\r\n" );
echo( "sOuterTest2 is $sOuterTest2\r\n" );
echo( "sOuterTest3 is $sOuterTest3\r\n" );
เอาท์พุต:
C:\test>php test.php
sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
&
หมายถึงการส่งผ่านโดยการอ้างอิง:
การอ้างอิงอนุญาตให้ตัวแปรสองตัวอ้างอิงถึงเนื้อหาเดียวกัน กล่าวอีกนัยหนึ่ง ตัวแปรชี้ไปที่เนื้อหา (แทนที่จะกลายเป็นเนื้อหานั้น) การส่งผ่านโดยการอ้างอิงทำให้ตัวแปรสองตัวชี้ไปยังเนื้อหาเดียวกันภายใต้ชื่อที่ต่างกัน เครื่องหมายและ (&
) จะถูกวางไว้หน้าตัวแปรที่จะอ้างอิง
หมายความว่าคุณส่งการอ้างอิงไปยังสตริงไปยังวิธีการ การเปลี่ยนแปลงทั้งหมดที่ทำกับสตริงภายในเมธอดจะมีผลภายนอกเมธอดนั้นในโค้ดของคุณด้วย
ดูเพิ่มเติม: ตัวดำเนินการ =& ของ PHP
ตัวอย่าง:
$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2
หากไม่มีตัวดำเนินการ & คุณจะยังคงเห็น "ทดสอบ" ในตัวแปรของคุณ
& – ผ่านโดยการอ้างอิง มันถูกส่งผ่านโดยการอ้างอิงแทนค่าสตริง