ใช้อาร์เรย์จากฟังก์ชันโดยตรง โดยไม่ต้องกำหนดตัวแปรก่อน

ฉันสงสัยว่าฉันสามารถกำหนดค่าตัวแปรของค่าดัชนีอาร์เรย์เฉพาะที่ส่งคืนโดยฟังก์ชันใน PHP ในบรรทัดเดียวได้หรือไม่

ตอนนี้ฉันมีฟังก์ชันที่ส่งคืนอาเรย์แบบเชื่อมโยงและฉันทำสิ่งที่ฉันต้องการในสองบรรทัด

$var = myFunction($param1, $param2);
$var = $var['specificIndex'];

โดยไม่ต้องเพิ่มพารามิเตอร์ที่กำหนดว่าประเภทการคืนสินค้าคืออะไร มีวิธีการทำเช่นนี้ในบรรทัดเดียวหรือไม่?


person Devin Crossman    schedule 25.10.2012    source แหล่งที่มา


คำตอบ (2)


ใน PHP 5.4 คุณสามารถทำได้: $var = myFunction(param1, param2)['specificIndex'];

อีกทางเลือกหนึ่งคือการทราบลำดับของอาร์เรย์ และใช้ list() โปรดทราบว่า list ใช้ได้กับอาร์เรย์ตัวเลขเท่านั้น

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

function myFunction($a, $b){
    // CODE
    return array(12, 16);
}

list(,$b) = myFunction(1,2); // $b is now 16
person Rocket Hazmat    schedule 25.10.2012
comment
นี่เป็นคำตอบที่ดี list(,$b) อาจไม่ใช่ไวยากรณ์ที่ดีที่สุดที่จะใช้เพื่อให้อ่านง่าย (ในความคิดของฉัน) - person user1477388; 25.10.2012
comment
@ user1477388: ฉันรู้ แต่มันเป็นเพียงตัวอย่าง - person Rocket Hazmat; 25.10.2012
comment
น่าเสียดายที่เซิร์ฟเวอร์ของฉันใช้ PHP 5.2 ขอบคุณสำหรับตัวเลือกรายการ - person Devin Crossman; 25.10.2012

คุณสามารถเพิ่มพารามิเตอร์ทางเลือกเพิ่มเติมได้ และหากตั้งค่าไว้ ก็จะส่งกลับค่านั้น ดูรหัสต่อไปนี้:

function myFunction($param1, $param2, $returnVal = "")
{
    $arr = array();

    // your code here

    if ($returnVal)
    {
        return $arr[$returnval];
    }
    else
    {
        return $arr;
    }
}
person user1477388    schedule 25.10.2012
comment
แค่อยากบอกว่ามีวิธีแก้ไขปัญหาที่ดีกว่า - person FabianoLothor; 25.10.2012
comment
ฉันจะทำให้มันเป็นแบบซับเดียว: return ( $returnVal) ? $arr[$returnVal] : $arr; - person nickb; 25.10.2012
comment
@FabianoLothor: อย่าลังเลที่จะโพสต์หากคุณต้องการ @nickb: ใช่นั่นก็เป็นตัวเลือกเช่นกัน เพื่อให้อ่านง่ายที่สุด ฉันจึงโพสต์ของฉันเป็นคำสั่ง if แบบง่ายๆ - person user1477388; 25.10.2012