我需要运行一个接受数组的函数,然后有效地打印出该数组的内容。很简单,但是我想要包含传递给该函数的数组的名称。
我已经阅读过使用“hack”方法(如debug_backtrace)来查找调用文件和行号,然后解析该行以获取函数名称,这当然是一种选择(尽管是复杂的)。另一种方法是使用字符串调用函数,该字符串是数组的名称,然后在函数内声明一个全局:
function showArray($array){
global $$array;
echo $array . ' contains the following:<pre>';
print_r($$array);
echo '</pre>';
}
// set up a test array for demo purposes
$testArray = [];
for($i=0; $i<10; $i++){
$testArray[$i] = md5(uniqid());
}
// call the function with string, not the array itself
showArray('testArray');
这肯定显示了我想要的回应:
testArray contains the following:
Array
(
[0] => 18c19a1daf7b62e2d064697850dd1bf2
[1] => 3fc8981f8b4e3a72fc48419389e246ae
..
[8] => 47d28676305ffaef7c7e10e7950f5bb3
[9] => db20f5b27f9917ebee7ab149df759387
)
但是想知道PHP中是否隐藏了一些我不知道的东西,这使我无法使用这种方法?除非它绝对100%要求(在这种情况下可能是这样),AFAIK使用全局变量是“糟糕”的做法......