繁体   English   中英

PHP从以键名作为变量名的变量创建单例数组

[英]PHP Create singleton array from variable with key name as variable name

我发现我必须在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);

我可能会将此函数称为“ array_self”,可能会简称为“ a_self”,对我来说,它会更好地读取。 让我感到烦恼的是,必须在我的示例“ logs”中两次键入名称,因为这可能会导致令人沮丧的错别字。

您可以使用内置函数compact()完成此操作。

假设您有一个$logs变量,则可以通过调用以下命令创建一个数组:

compact("logs");

示例: https//eval.in/114710

$logs = "there was a blahbalh";

$ary = compact("logs");

var_dump($ary);

收益:

array(1) {
  ["logs"]=>
  string(20) "there was a blahbalh"
}

php中的函数通常无法访问外部变量。 因此,您需要以某种方式提供访问权限。

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:很难说这在您的体系结构中是否有问题,但是有这样的需求是一个迹象,表明您需要修改体系结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM