我发现我必须在PHP中做很多事情:获取存储在变量中的值,并将此值放在一个数组中,其中的键与变量名称相同。这种模式经常出现在CodeIgniter中,但这不是CI特定的问题。
我的意思是我经常要这样做:
$logs = //get logs from db
$this->load->view( 'showLogs', array('logs'=>$logs) ); //load a CI view
所以我的问题是,是否有一个神奇的功能/我们能编写一个神奇的功能,通过简化这个过程来节省一些击键并提高清晰度吗?
我想要的是:
$arr = my_magic_function($logs)
// $arr = array('logs'=>$logs);
我可能会将此功能称为#34; array_self",可能缩写为" a_self"对我而言,它会更好地阅读。我的错误就是必须在我的例子中输入名称" logs",两次,因为这可能是令人沮丧的拼写错误的来源。
答案 0 :(得分:1)
您可以使用内置函数compact()完成此操作。
假设您有一个变量$logs
,您可以通过调用:
compact("logs");
$logs = "there was a blahbalh";
$ary = compact("logs");
var_dump($ary);
返回:
array(1) {
["logs"]=>
string(20) "there was a blahbalh"
}
答案 1 :(得分:0)
php中的函数通常has no access到外部变量。因此,您需要以某种方式提供访问权限。
function magic_array_wrapped($name) {
$a = array();
$a[$name] = $GLOBALS[$name];
return $a;
}
用法:magic_array_wrapped('logs')
也许,它会以这种方式工作,但我不确定:
function magic_array_wrapped($name) {
global $$name;
$a = array();
$a[$name] = $$name;
return $a;
}
PS:很难说,这是否是您架构中的问题,但是有这样的需求是一个标志,您需要修改架构。