Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah PHP sebagai Rentetan?

Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah PHP sebagai Rentetan?

Barbara Streisand
Barbara Streisandasal
2024-12-25 00:53:12220semak imbas

How Can I Retrieve a PHP Variable's Name as a String?

Pendapatan Nama Pembolehubah dalam PHP

Mendapatkan semula nama pembolehubah sebagai rentetan boleh menjadi teknik yang berguna dalam senario tertentu. Walaupun PHP tidak menyokong fungsi ini secara langsung, adalah mungkin untuk mencapai hasil yang diingini menggunakan penyelesaian kreatif.

Dalam kod PHP yang diberikan, kami mempunyai pembolehubah bernama $FooBar diperuntukkan kepada nilai rentetan. Tugasnya ialah untuk mencipta fungsi dipanggil print_var_name() yang mencetak nama pembolehubah sebagai "FooBar" apabila melepasi pembolehubah.

Penyelesaian yang dicadangkan menggunakan fungsi debug_backtrace() untuk menganalisis tindanan panggilan. Ia mengenal pasti baris kod di mana fungsi itu digunakan dan mendapatkan semula baris kod yang sepadan daripada fail sumber. Menggunakan ungkapan biasa, fungsi mengekstrak nama pembolehubah daripada baris.

function varName($v) {
    $trace = debug_backtrace();
    $vLine = file(__FILE__);
    $fLine = $vLine[$trace[0]['line'] - 1];
    preg_match("#\$(\w+)#", $fLine, $match);
    print_r($match);
}

Penyelesaian ini berfungsi dengan memanfaatkan maklumat yang tersedia dalam timbunan panggilan dan kod sumber. Ia membolehkan kami mendapatkan semula nama pembolehubah yang dikaitkan dengan nilai yang dihantar ke fungsi print_var_name(). Walau bagaimanapun, ia menganggap bahawa nama pembolehubah ialah satu-satunya pembolehubah dalam baris tempat fungsi dipanggil, yang mungkin tidak selalu berlaku dalam senario kod kompleks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah PHP sebagai Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn