Mengambil Nama Pembolehubah sebagai Rentetan dalam PHP
Dalam PHP, situasi sering timbul di mana nama pembolehubah diperlukan sebagai rentetan. Pertimbangkan kod berikut:
$FooBar = "a string"; print_var_name($FooBar);
Kami mahu print_var_name() mengeluarkan "FooBar". Walau bagaimanapun, adakah ini boleh dilaksanakan dalam PHP?
Cabaran Pengambilan Nama Pembolehubah
Disebabkan sifat dinamik PHP, mendapatkan semula nama pembolehubah sebagai rentetan boleh mencabar. Nama pembolehubah tidak disimpan sebagai metadata dalam PHP. Sebaliknya, ia ditetapkan secara dinamik pada masa jalan.
Penyelesaian Yang Mungkin
Satu penyelesaian yang mungkin untuk cabaran ini telah dicadangkan:
function varName($v) { $trace = debug_backtrace(); $vLine = file(__FILE__); $fLine = $vLine[$trace[0]['line'] - 1]; preg_match("#\$(\w+)#", $fLine, $match); print_r($match); } $foo = "knight"; $bar = array(1, 2, 3); $baz = 12345; varName($foo); varName($bar); varName($baz);
Fungsi ini menyelesaikan tugas dengan menganalisis baris kod yang memanggilnya. Ia sepadan dengan nama pembolehubah daripada hujah yang diluluskan.
Walau bagaimanapun, penyelesaian ini mempunyai had. Ia hanya berfungsi dalam fungsi yang memanggilnya. Selain itu, nama pembolehubah yang diambil mungkin tidak menggambarkan nama pembolehubah sebenar dengan tepat jika ia telah dialiaskan atau diubah suai di bahagian lain kod.
Alternatif dan Pertimbangan Lain
Akhirnya, sama ada kaedah ini sesuai bergantung pada kes penggunaan tertentu. PHP tidak menyediakan kaedah langsung untuk mendapatkan semula nama pembolehubah sebagai rentetan, jadi penyelesaian kreatif mungkin diperlukan.
Pilihan lain untuk dipertimbangkan termasuk menggunakan fungsi var_dump() atau print_r() PHP untuk memaparkan maklumat pembolehubah atau menyimpan nama pembolehubah dalam tatasusunan atau objek untuk rujukan masa hadapan.
Adalah penting untuk mempertimbangkan dengan teliti sebab di sebalik keperluan untuk mendapatkan semula nama pembolehubah dan teroka pendekatan alternatif yang memenuhi keperluan khusus projek.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah sebagai Rentetan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!