我一直在试图编写一个类,以便为我的同学轻松插入项目到数据库中。为此,我想在该类中创建一个函数,将所有列和值作为键和值的数组。很明显,我可以做到以下几点:PHP:将参数解释为数组?
class aClass {
public function aFunction($args) {
}
}
(new aClass)->aFunction(Array('column1' => 'value1', 'column2' => 'value2'));
这将创建一个数组$ args的$ args [column] = value。而且我知道我不是第一个问这个问题的人,但我希望它更有魅力。 我在寻找一个至少比上面的例子更有趣的替代方案。对于除了Array之外的每个类,'=>'是一个直接的语法错误,我没有多久就意识到这一点。那么,我已经尝试了两件事,其中一件事情更糟,其中一件事因为我的推理失败而失效。
class aClass {
public function aFunction() {
$args = func_get_args();
}
}
(new aClass)->aFunction('value1', 'value2');
上面是相当整洁,但我知道没有办法传递列名没有比第一个例子更长和更笨的列。
class aClass {
public function aFunction() {
$args = get_defined_vars();
}
}
(new aClass)->aFunction($column1 = 'value1', $column2 = 'value2');
除了不起作用的事实之外,上述方法将会正常。我认为它不起作用,因为“$ column1 ='value1'”只会在成功时返回“'value'”,这使得它成为一个愚蠢而且资源效率低下的方式,只写“'value'”。
任何消耗?我知道这有点愚蠢,这个问题以前可能已经问过了,但只有Array类才具有这种语法,看起来不公平。我现在实际上一直在Google上搜索几个小时,亲爱的上帝请帮助我的ocd。
编辑: 即使它只是使php解析器interpret =>作为逗号的东西,所以我可以使用模运算符,任何事情都会更好。
你可以使用新的短数组符号(PHP> = 5.4)。例如:'$ a = [1,2,3,4];'或'$ a = ['one'=> 1,'two'=> 2,'three'=> 3,'four'=> 4 ];' – Linblow
哦,这其实并不算太糟:我 –