Gunakan array dari fungsi secara langsung, tanpa menetapkan variabel terlebih dahulu

Saya ingin tahu apakah saya dapat menetapkan nilai indeks array tertentu ke variabel yang dikembalikan oleh suatu fungsi di PHP dalam satu baris.

Saat ini saya memiliki fungsi yang mengembalikan array asosiatif dan saya melakukan apa yang saya inginkan dalam dua baris.

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

tanpa menambahkan parameter yang menentukan tipe pengembaliannya, apakah ada cara untuk melakukan ini dalam satu baris?


person Devin Crossman    schedule 25.10.2012    source sumber


Jawaban (2)


Di PHP 5.4, Anda dapat melakukan ini: $var = myFunction(param1, param2)['specificIndex'];.

Pilihan lainnya adalah mengetahui urutan array, dan menggunakan list(). Perhatikan bahwa list hanya berfungsi dengan array numerik.

Misalnya:

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
Ini adalah jawaban yang bagus. list(,$b) mungkin bukan sintaks terbaik untuk digunakan agar mudah dibaca (menurut saya). - person user1477388; 25.10.2012
comment
@ user1477388: Saya tahu, tapi itu hanya sebuah contoh. - person Rocket Hazmat; 25.10.2012
comment
Sayangnya server saya menggunakan PHP 5.2. terima kasih untuk opsi daftarnya - person Devin Crossman; 25.10.2012

Anda dapat menambahkan parameter opsional tambahan dan, jika disetel, akan mengembalikan nilai tersebut. Lihat kode berikut:

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
Hanya ingin mengatakan bahwa ada cara yang lebih baik untuk menyelesaikan masalah ini. - person FabianoLothor; 25.10.2012
comment
Saya akan membuatnya menjadi satu kalimat: return ( $returnVal) ? $arr[$returnVal] : $arr; - person nickb; 25.10.2012
comment
@FabianoLothor: Jangan ragu untuk mempostingnya jika Anda mau. @nickb: Ya, itu juga merupakan pilihan. Untuk keterbacaan terbaik, saya memposting pernyataan saya sebagai if sederhana. - person user1477388; 25.10.2012