เป็นไปได้ไหมที่จะมีฟังก์ชั่นที่มีการคืนค่าสองค่าดังนี้:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
ถ้าเป็นเช่นนั้นฉันจะได้รับผลตอบแทนแยกกันอย่างไร
เป็นไปได้ไหมที่จะมีฟังก์ชั่นที่มีการคืนค่าสองค่าดังนี้:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
ถ้าเป็นเช่นนั้นฉันจะได้รับผลตอบแทนแยกกันอย่างไร
คำตอบ:
ไม่มีวิธีคืนค่า 2 ตัวแปร แม้ว่าคุณสามารถเผยแพร่อาเรย์และส่งกลับได้ สร้างเงื่อนไขเพื่อส่งคืนตัวแปรแบบไดนามิก ฯลฯ
ตัวอย่างเช่นฟังก์ชั่นนี้จะกลับมา $var2
function wtf($blahblah = true) {
$var1 = "ONe";
$var2 = "tWo";
if($blahblah === true) {
return $var2;
}
return $var1;
}
ในแอปพลิเคชัน:
echo wtf();
//would echo: tWo
echo wtf("not true, this is false");
//would echo: ONe
หากคุณต้องการทั้งสองอย่างคุณสามารถปรับเปลี่ยนฟังก์ชั่นได้เล็กน้อย
function wtf($blahblah = true) {
$var1 = "ONe";
$var2 = "tWo";
if($blahblah === true) {
return $var2;
}
if($blahblah == "both") {
return array($var1, $var2);
}
return $var1;
}
echo wtf("both")[0]
//would echo: ONe
echo wtf("both")[1]
//would echo: tWo
list($first, $second) = wtf("both")
// value of $first would be $var1, value of $second would be $var2
wantarray()
ในทางเทคนิคคุณไม่สามารถส่งคืนค่ามากกว่าหนึ่งค่า อย่างไรก็ตามมีหลายวิธีในการแก้ไขข้อ จำกัด ดังกล่าว วิธีที่ใช้งานได้ดีที่สุดเช่นการคืนค่าหลายค่านั้นอยู่ที่list
คำหลัก:
function getXYZ()
{
return array(4,5,6);
}
list($x,$y,$z) = getXYZ();
// Afterwards: $x == 4 && $y == 5 && $z == 6
// (This will hold for all samples unless otherwise noted)
ในทางเทคนิคคุณจะส่งคืนอาร์เรย์และใช้list
ในการจัดเก็บองค์ประกอบของอาร์เรย์นั้นในค่าต่าง ๆ แทนที่จะเก็บอาร์เรย์จริง การใช้เทคนิคนี้จะทำให้รู้สึกเหมือนคืนค่ามากที่สุด
การlist
แก้ปัญหาเป็น php เฉพาะค่อนข้าง มีสองสามภาษาที่มีโครงสร้างคล้ายกัน แต่มีภาษาอื่น ๆ อีกมากกว่าที่ไม่ทำ มีอีกวิธีหนึ่งที่ใช้กันทั่วไปเพื่อ "คืนค่า" หลายค่าและสามารถใช้ได้ในทุก ๆ ภาษา (ไม่ทางใดก็ทางหนึ่ง) อย่างไรก็ตามวิธีนี้จะดูค่อนข้างแตกต่างดังนั้นจึงอาจต้องใช้ความคุ้นเคยบ้าง
// note that I named the arguments $a, $b and $c to show that
// they don't need to be named $x, $y and $z
function getXYZ(&$a, &$b, &$c)
{
$a = 4;
$b = 5;
$c = 6;
}
getXYZ($x, $y, $z);
เทคนิคนี้ยังถูกนำมาใช้ในการทำงานบางอย่างที่กำหนดโดย PHP ตัวเอง (เช่น$count
ในstr_replace , $matches
ในpreg_match ) สิ่งนี้อาจรู้สึกแตกต่างจากการคืนค่าหลายค่า แต่อย่างน้อยก็น่ารู้
วิธีที่สามคือการใช้วัตถุเพื่อเก็บค่าต่าง ๆ ที่คุณต้องการ นี่คือการพิมพ์ที่มากกว่าดังนั้นจึงไม่ได้ใช้บ่อยเท่าสองวิธีข้างต้น มันอาจสมเหตุสมผลที่จะใช้สิ่งนี้แม้ว่าเมื่อใช้ตัวแปรชุดเดียวกันในหลาย ๆ ที่ (หรือแน่นอนการทำงานในภาษาที่ไม่รองรับวิธีการข้างต้นหรืออนุญาตให้คุณทำสิ่งนี้โดยไม่ต้องพิมพ์เพิ่มเติม)
class MyXYZ
{
public $x;
public $y;
public $z;
}
function getXYZ()
{
$out = new MyXYZ();
$out->x = 4;
$out->y = 5;
$out->z = 6;
return $out;
}
$xyz = getXYZ();
$x = $xyz->x;
$y = $xyz->y;
$z = $xyz->z;
วิธีการข้างต้นสรุปวิธีหลักในการคืนค่าหลายค่าจากฟังก์ชัน อย่างไรก็ตามมีวิธีการเหล่านี้ที่หลากหลาย รูปแบบที่น่าสนใจที่สุดในการดูคือรูปแบบที่คุณส่งคืนอาร์เรย์จริง ๆ เพียงเพราะมีหลายสิ่งที่คุณสามารถทำได้ด้วยอาร์เรย์ใน PHP
ก่อนอื่นเราสามารถคืนอาเรย์และไม่ถือว่ามันเป็นอะไรก็ได้ยกเว้นอาเรย์:
function getXYZ()
{
return array(1,2,3);
}
$array = getXYZ();
$x = $array[1];
$y = $array[2];
$z = $array[3];
ส่วนที่น่าสนใจที่สุดเกี่ยวกับโค้ดด้านบนคือโค้ดในฟังก์ชันนั้นเหมือนกับในตัวอย่างแรกที่ฉันให้ เฉพาะการเรียกใช้รหัสฟังก์ชั่นเท่านั้น ซึ่งหมายความว่ามันขึ้นอยู่กับการเรียกฟังก์ชั่นวิธีการจัดการกับผลลัพธ์ที่ฟังก์ชันส่งคืน
อีกวิธีหนึ่งสามารถใช้อาเรย์แบบเชื่อมโยง:
function getXYZ()
{
return array('x' => 4,
'y' => 5,
'z' => 6);
}
$array = getXYZ();
$x = $array['x'];
$y = $array['y'];
$z = $array['z'];
php มีcompact
ฟังก์ชั่นที่ให้คุณทำเหมือนข้างบน แต่ในขณะที่เขียนโค้ดน้อยลง (ตัวอย่างจะไม่มีรหัสน้อยลง แต่อาจมีแอปพลิเคชันในโลกแห่งความเป็นจริง) อย่างไรก็ตามฉันคิดว่าจำนวนการบันทึกการพิมพ์มีน้อยและทำให้อ่านรหัสยากขึ้นดังนั้นฉันจะไม่ทำเอง อย่างไรก็ตามนี่คือตัวอย่าง:
function getXYZ()
{
$x = 4;
$y = 5;
$z = 6;
return compact('x', 'y', 'z');
}
$array = getXYZ();
$x = $array['x'];
$y = $array['y'];
$z = $array['z'];
ควรสังเกตว่าแม้ว่าcompact
จะมีคู่ในextract
ที่สามารถใช้ในรหัสโทรที่นี่ แต่เนื่องจากมันเป็นความคิดที่ดีที่จะใช้มัน (โดยเฉพาะอย่างยิ่งสำหรับสิ่งที่ง่ายเช่นนี้) ฉันจะไม่ให้ตัวอย่างสำหรับมัน ปัญหาคือมันจะทำ "เวทมนต์" และสร้างตัวแปรให้คุณในขณะที่คุณไม่สามารถเห็นตัวแปรที่สร้างขึ้นโดยไม่ต้องไปที่ส่วนอื่น ๆ ของรหัส
สุดท้ายผมอยากจะพูดถึงว่าlist
ไม่ได้จริงๆเล่นได้ดีกับอาเรย์ สิ่งต่อไปนี้จะทำในสิ่งที่คุณคาดหวัง:
function getXYZ()
{
return array('x' => 4,
'y' => 5,
'z' => 6);
}
$array = getXYZ();
list($x, $y, $z) = getXYZ();
อย่างไรก็ตามสิ่งต่อไปนี้จะทำสิ่งที่แตกต่าง:
function getXYZ()
{
return array('x' => 4,
'z' => 6,
'y' => 5);
}
$array = getXYZ();
list($x, $y, $z) = getXYZ();
// Pay attention: $y == 6 && $z == 5
หากคุณใช้list
กับอาเรย์แบบเชื่อมโยงและบุคคลอื่นจะต้องเปลี่ยนรหัสในฟังก์ชันที่เรียกใช้ในอนาคต (ซึ่งอาจเกิดขึ้นได้กับสถานการณ์ใด ๆ ) มันอาจแตกหักในทันทีดังนั้นฉันจึงขอแนะนำไม่ให้รวมlist
กับอาเรย์แบบเชื่อมโยง
return array('x' => $x, 'y' => $y, 'z' => $z)
สะอาดกว่า แต่ถึงจุดที่ฉันจะเขียนด้วยตัวเองไม่ใช่จุดที่ฉันจะขอให้ผู้อื่นใช้รูปแบบนั้น
ในตัวอย่างของคุณผลตอบแทนที่สองจะไม่เกิดขึ้น - ผลตอบแทนแรกคือสิ่งสุดท้ายที่ PHP จะทำงาน หากคุณต้องการส่งคืนค่าหลายค่าให้ส่งคืนอาร์เรย์:
function test($testvar) {
return array($var1, $var2);
}
$result = test($testvar);
echo $result[0]; // $var1
echo $result[1]; // $var2
list($result_1, result_2) = test($testvar);
result_2
หรือ$result_2
?
$result_2
ตั้งแต่ PHP 7.1 เรามีการทำลายล้างที่เหมาะสมสำหรับรายการ ดังนั้นคุณสามารถทำสิ่งนี้:
$test = [1, 2, 3, 4];
[$a, $b, $c, $d] = $test;
echo($a);
> 1
echo($d);
> 4
ในฟังก์ชั่นนี้จะมีลักษณะเช่นนี้:
function multiple_return() {
return ['this', 'is', 'a', 'test'];
}
[$first, $second, $third, $fourth] = multiple_return();
echo($first);
> this
echo($fourth);
> test
การทำลายล้างเป็นเครื่องมือที่ทรงพลังมาก มันสามารถทำลายคีย์ => คู่ของค่าได้เช่นกัน:
["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3];
ดูหน้าคุณสมบัติใหม่สำหรับ PHP 7.1:
ใน PHP 5.5 ยังมีแนวคิดใหม่: generators
ซึ่งคุณสามารถให้ผลลัพธ์หลายค่าจากฟังก์ชัน:
function hasMultipleValues() {
yield "value1";
yield "value2";
}
$values = hasMultipleValues();
foreach ($values as $val) {
// $val will first be "value1" then "value2"
}
หรือคุณสามารถผ่านการอ้างอิง:
function byRef($x, &$a, &$b)
{
$a = 10 * $x;
$b = 100 * $x;
}
$a = 0;
$b = 0;
byRef(10, $a, $b);
echo $a . "\n";
echo $b;
สิ่งนี้จะส่งออก
100
1000
ฉันรู้ว่าฉันค่อนข้างช้า แต่มีวิธีแก้ปัญหาที่ดีและเรียบง่ายสำหรับปัญหานี้
เป็นไปได้ที่จะคืนค่าหลายค่าพร้อมกันโดยใช้การทำลายล้าง
function test()
{
return [ 'model' => 'someValue' , 'data' => 'someothervalue'];
}
ตอนนี้คุณสามารถใช้สิ่งนี้
$result = test();
extract($result);
extract
สร้างตัวแปรสำหรับสมาชิกแต่ละคนในอาร์เรย์ตั้งชื่อตามสมาชิกนั้น ตอนนี้คุณสามารถเข้าถึง$model
และ$data
model
และdata
) ยังไม่มีอยู่ในตัวแปร หากเป็นเช่นนั้นให้ใช้prefix
พารามิเตอร์ของextract
เพื่อหลีกเลี่ยงความขัดแย้ง
คุณสามารถส่งคืนอาร์เรย์และสเกลาร์ได้หลายฟังก์ชัน
function x()
{
$a=array("a","b","c");
$b=array("e","f");
return array('x',$a,$b);
}
list ($m,$n,$o)=x();
echo $m."\n";
print_r($n);
print_r($o);
มันเป็นไปไม่ได้ที่จะมีสองข้อความสั่งคืน อย่างไรก็ตามมันไม่ได้เกิดข้อผิดพลาด แต่เมื่อมีการเรียกใช้ฟังก์ชั่นคุณจะได้รับเฉพาะค่าข้อความสั่งคืนแรกเท่านั้น เราสามารถใช้ return of array เพื่อรับค่าหลายค่าตอบแทน ตัวอย่างเช่น:
function test($testvar)
{
// do something
//just assigning a string for example, we can assign any operation result
$var1 = "result1";
$var2 = "result2";
return array('value1' => $var1, 'value2' => $var2);
}
ฟังก์ชั่นตามนิยามจะคืนค่าหนึ่งค่าเท่านั้น
อย่างไรก็ตามตามที่คุณสันนิษฐานไว้ค่านั้นอาจเป็นอาร์เรย์ได้
ดังนั้นคุณสามารถทำสิ่งที่ชอบ:
<?PHP
function myfunc($a,$b){
return array('foo'=>$a,'bar'=>$b);
}
print_r(myfunc('baz','bork'));
ที่กล่าวว่ามันคุ้มค่าที่จะสละเวลาและคิดเกี่ยวกับสิ่งที่คุณกำลังพยายามแก้ไข ในขณะที่ส่งกลับค่าผลลัพธ์ที่ซับซ้อน (เช่นอาร์เรย์หรือวัตถุ) นั้นใช้ได้อย่างสมบูรณ์ถ้าคุณคิดว่า "ฉันต้องการคืนค่าสองค่า" คุณอาจออกแบบได้ไม่ดี ไม่มีรายละเอียดเพิ่มเติมในคำถามของคุณมันยากที่จะพูด แต่ก็ไม่เคยเจ็บปวดที่จะหยุดและคิดสองครั้ง
แนวปฏิบัติที่ดีที่สุดคือการใส่ตัวแปรที่ส่งคืนของคุณลงในอาร์เรย์แล้วใช้list()
เพื่อกำหนดค่าอาร์เรย์ให้กับตัวแปร
<?php
function add_subt($val1, $val2) {
$add = $val1 + $val2;
$subt = $val1 - $val2;
return array($add, $subt);
}
list($add_result, $subt_result) = add_subt(20, 7);
echo "Add: " . $add_result . '<br />';
echo "Subtract: " . $subt_result . '<br />';
?>
ใช่คุณสามารถใช้วัตถุ :-)
แต่วิธีที่ง่ายที่สุดคือส่งคืนอาร์เรย์:
return array('value1', 'value2', 'value3', '...');
สำหรับ PHP 7.1 <= คุณสามารถใช้ไวยากรณ์ใหม่ (แทนฟังก์ชั่นรายการ ):
/**
* @return array [foo, bar]
*/
function getFooAndBar(): array {
return ['foo', 'bar'];
}
[$foo, $bar] = getFooAndBar();
print 'Hello '. $foo . ' and ' . $bar;
มันก็โอเคสำหรับฉันถ้าคุณต้องการส่งกลับตัวแปร 2-3 ตัวมิฉะนั้นคุณควรใช้วัตถุที่มีคุณสมบัติที่ต้องการ
ฉันได้ใช้เช่นนี้สำหรับฟังก์ชั่น PHP หลายค่าตอบแทน เป็นคนดีกับรหัสของคุณ ขอบคุณ.
<?php
function multi_retun($aa)
{
return array(1,3,$aa);
}
list($one,$two,$three)=multi_retun(55);
echo $one;
echo $two;
echo $three;
?>
คำตอบที่ให้โดยขีดสีเขียวด้านบนนั้นไม่ถูกต้อง คุณสามารถคืนค่าได้หลายค่าใน PHP ถ้าคุณคืนค่าอาเรย์ ดูรหัสต่อไปนี้สำหรับตัวอย่าง:
<?php
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
รหัสนี้ถูกคัดลอกมาจากหน้าต่อไปนี้บนเว็บไซต์ของ PHP: http://php.net/manual/en/functions.returning-values.php ฉันเคยใช้รหัสประเภทเดียวกันหลายครั้งด้วยตนเองดังนั้นจึงสามารถยืนยันได้ว่า ดีและใช้งานได้ดี
ฟังก์ชั่นใน PHP สามารถส่งกลับตัวแปรเดียวเท่านั้น คุณสามารถใช้ตัวแปรที่มีขอบเขตทั่วโลกคุณสามารถส่งกลับอาร์เรย์หรือคุณสามารถส่งผ่านตัวแปรโดยการอ้างอิงไปยังฟังก์ชั่นและกว่าค่าการเปลี่ยนแปลง .. แต่ทั้งหมดนั้นจะลดความสามารถในการอ่านรหัสของคุณ ฉันขอแนะนำให้คุณดูในชั้นเรียน
คิดว่าฉันจะขยายคำตอบบางส่วนจากด้านบน ....
class nameCheck{
public $name;
public function __construct(){
$this->name = $name;
}
function firstName(){
// If a name has been entered..
if(!empty($this->name)){
$name = $this->name;
$errflag = false;
// Return a array with both the name and errflag
return array($name, $errflag);
// If its empty..
}else if(empty($this->name)){
$errmsg = 'Please enter a name.';
$errflag = true;
// Return both the Error message and Flag
return array($errmsg, $errflag);
}
}
}
if($_POST['submit']){
$a = new nameCheck;
$a->name = $_POST['name'];
// Assign a list of variables from the firstName function
list($name, $err) = $a->firstName();
// Display the values..
echo 'Name: ' . $name;
echo 'Errflag: ' . $err;
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>" >
<input name="name" />
<input type="submit" name="submit" value="submit" />
</form>
สิ่งนี้จะให้ฟิลด์อินพุตและปุ่มส่งเมื่อคุณส่งถ้าฟิลด์ชื่อว่างเปล่ามันจะคืนค่าสถานะข้อผิดพลาดและข้อความ หากฟิลด์ชื่อมีค่ามันจะส่งคืนค่า / ชื่อและค่าสถานะข้อผิดพลาดเป็น 0 สำหรับเท็จ = ไม่มีข้อผิดพลาด หวังว่านี่จะช่วยได้!
บางคนอาจต้องการคืนค่าหลายค่าเป็นวัตถุ:
function test() {
$object = new stdClass();
$object->x = 'value 1';
$object->y = 'value 2';
return $object;
}
และเรียกมันว่าสิ่งนี้:
echo test()->x;
หรือ:
$test = test();
echo $test->y;
ใช่และไม่. คุณไม่สามารถส่งคืนตัวแปร / วัตถุมากกว่าหนึ่งรายการ แต่ตามที่คุณแนะนำคุณสามารถวางลงในอาร์เรย์และส่งคืนได้
ไม่มีการ จำกัด การซ้อนของอาเรย์ดังนั้นคุณสามารถทำแพ็คเกจเหล่านั้นเพื่อส่งคืน
คุณสามารถส่งคืนได้หนึ่งตัวแปรเท่านั้นซึ่งอาจเป็นอาร์เรย์ แต่คุณสามารถเปลี่ยนตัวแปรทั่วโลกจากภายในฟังก์ชั่น นั่นคือเวลาส่วนใหญ่ไม่ใช่สไตล์ที่ดีมาก แต่ใช้งานได้ ในชั้นเรียนคุณมักจะเปลี่ยน varbiables ชั้นเรียนจากภายในฟังก์ชั่นโดยไม่ต้องกลับพวกเขา
คำตอบคือไม่ เมื่อ parser มาถึงคำสั่ง return แรกคำสั่งนั้นจะควบคุมกลับไปยังฟังก์ชันการเรียก - คำสั่ง return ที่สองของคุณจะไม่ถูกดำเนินการ
array
เพิ่มตัวแปรทั้งหมดในอาร์เรย์และแล้วในที่สุดกลับ
function test($testvar)
{
// do something
return array("var1" => $var1, "var2" => @var2);
}
และจากนั้น
$myTest = test($myTestVar);
//$myTest["var1"] and $myTest["var2"] will be usable
ฉันคิดว่า eliego ได้อธิบายคำตอบไว้อย่างชัดเจนแล้ว แต่ถ้าคุณต้องการคืนค่าทั้งสองให้ใส่ไว้ในอาร์เรย์และส่งคืน
function test($testvar)
{
// do something
return array('var1'=>$var1,'var2'=>$var2);
//defining a key would be better some times
}
// เพื่อเข้าถึงค่าส่งคืน
$returned_values = test($testvar);
echo $returned_values['var1'];
echo $returned_values['var2'];
$this
คำหลัก แต่ไม่มีคลาสหรือวัตถุที่กล่าวถึง 2) ถ้าคุณคืนค่าลงในตัวแปรของ$returned_values
คุณคุณควรจะสะท้อนจากตัวแปรนั้น:echo $returned_values['var1'];
<?php
function foo(){
$you = 5;
$me = 10;
return $you;
return $me;
}
echo foo();
//output is just 5 alone so we cant get second one it only retuns first one so better go with array
function goo(){
$you = 5;
$me = 10;
return $you_and_me = array($you,$me);
}
var_dump(goo()); // var_dump result is array(2) { [0]=> int(5) [1]=> int(10) } i think thats fine enough
?>
ภาษาที่อนุญาตให้ส่งคืนได้หลายครั้งโดยปกติจะแปลงค่าหลายค่าเป็นโครงสร้างข้อมูล
ตัวอย่างเช่นใน Python คุณสามารถคืนค่าได้หลายค่า อย่างไรก็ตามพวกเขาจะถูกส่งกลับเป็นหนึ่ง tuple
ดังนั้นคุณสามารถคืนค่าหลาย ๆ ค่าใน PHP เพียงแค่สร้างอาร์เรย์อย่างง่ายและส่งคืนค่านั้น
คุณสามารถรับค่าของตัวแปรตั้งแต่สองตัวขึ้นไปโดยการตั้งค่าโดยอ้างอิง:
function t(&$a, &$b) {
$a = 1;
$b = 2;
}
t($a, $b);
echo $a . ' ' . $b;
เอาท์พุท:
1 2
PHP ยังใช้ "พารามิเตอร์หมด" หรือไม่? หากเป็นเช่นนั้นคุณสามารถใช้ไวยากรณ์เพื่อปรับเปลี่ยนพารามิเตอร์อย่างน้อยหนึ่งพารามิเตอร์ที่เข้าสู่ฟังก์ชันของคุณได้ จากนั้นคุณจะมีอิสระในการใช้ตัวแปรที่ปรับเปลี่ยนหลังจากที่ฟังก์ชันของคุณส่งคืน
นี่เป็นวิธีที่ง่ายที่สุดในการทำ:
public function selectAllUsersByRole($userRole, $selector) {
$this->userRole = $userLevel;
$this->selector = $selector;
$sql = "SELECT * FROM users WHERE role <= ? AND del_stat = 0";
$stm = $this->connect()->prepare($sql); // Connect function in Dbh connect to database file
$stm->execute([$this->userRole]); // This is PHP 7. Use array($this->userRole) for PHP 5
$usersIdArray = array();
$usersFNameArray = array();
$usersLNameArray = array();
if($stm->rowCount()) {
while($row = $stm->fetch()) {
array_push($usersIdArray, $row['id']);
array_push($usersFNameArray, $row['f_name']);
array_push($usersLNameArray, $row['l_name']);
// You can return only $row['id'] or f_name or ...
// I used the array because it's most used.
}
}
if($this->selector == 1) {
return $usersIdArray;
}elseif($this->selector == 2) {
return $usersFNameArray;
}elseif($this->selector == 3) {
return $usersLNameArray;
}
}
เราจะเรียกฟังก์ชั่นนี้ได้อย่างไร?
$idData = $selectAllUsers->selectAllUsersByLevel($userRole, 0);
print_r($idData);
$idFName = $selectAllUsers->selectAllUsersByLevel($userRole, 1);
print_r($idFname);
แค่นั้นแหละ. ง่ายมาก.
$var1 = 0;
$var2 = 0;
function test($testvar, &$var1 , &$var2)
{
$var1 = 1;
$var2 = 2;
return;
}
test("", $var1, $var2);
// var1 = 1, var2 = 2
มันไม่ใช่วิธีที่ดี แต่ฉันคิดว่าเราสามารถตั้งค่าตัวแปรสองตัวในฟังก์ชันพร้อมกันได้
ฉันมีปัญหาที่คล้ายกัน - ดังนั้นฉันจึงพยายามไปและ googled เล็กน้อย (ค้นหาหัวข้อนี้) หลังจากลอง 5 นาทีและพบข้อผิดพลาดฉันพบว่าคุณสามารถใช้ "และ" เพื่อส่งคืนสองรายการ (อาจมากกว่า - ยังไม่ได้ทดสอบ) ในหนึ่งบรรทัด
รหัสของฉัน:
function get_id(){
global $b_id, $f_id;
// stuff happens
return $b_id AND $f_id;
}
//later in the code:
get_id();
var_dump($b_id);
var_dump($f_id); // tested output by var_dump
มันได้ผล. ฉันได้ทั้งค่าที่ฉันคาดหวังว่าจะได้รับ / ควรได้รับ ฉันหวังว่าฉันจะช่วยให้ทุกคนอ่านกระทู้นี้ :)