我想編寫一個函數,讓我來代替令牌的重複與從陣列逐次值的字符串,使WHERE name = ? and age ?
,array('joe', 32)
變得Where name = joe and age = 32
。 (我知道變量綁定不應該「手工」完成的;我試圖解決傳遞給雄辯DB::select
聲明參數)。`str_replace`有什麼特別之處?
我寫了這個:
function str_replace_array($search, array $replace, $subject) {
foreach ($replace as $replacement) {
$subject = str_replace($search, $replacement,$subject,1);
}
return $subject;
}
但是PHP 5.6.20給了我這個錯誤:
$ php -l str_replace_array.php
PHP Fatal error: Only variables can be passed by reference in str_replace_array.php on line 5
Errors parsing str_replace_array.php
我知道它的功能str_replace()
,因爲一個虛擬函數替換它允許它通過語法檢查。雖然沒有與受讓人和參數具有相同的變量 - 但是有沒有什麼可以表明這在這個函數中不起作用?
的manual entry不表示任何參數是通過引用傳遞;它表示返回值,所有示例都顯示分配。
什麼交易嗎?
與preg_quote機能的研究,你還可以通過$搜索的方式。 –