我一直在試圖編寫一個類,以便爲我的同學輕鬆插入項目到數據庫中。爲此,我想在該類中創建一個函數,將所有列和值作爲鍵和值的數組。很明顯,我可以做到以下幾點: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
哦,這其實並不算太糟:我 –