Я хочу написать функцию, которая позволяет мне заменять повторения токена в строке с необходимыми значениями из массива, так что 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 fuction вы все равно можете пройти $ search. –