Я не понимаю, почему эта ошибка возникает. Я хочу изменить некоторую строку в массиве на данные из базы данных, поэтому я использовал preg_replace_callback. Но когда я использую в определении функции обратного вызова
$row = $this->result->fetch_assoc();
анализатор отвечает с ошибкой
Весь код:
public function tRsql() {
$argNums = func_num_args();
$argsArr = func_get_args();
function change($matches) {
if(stripos($matches[0], "sql:")) {
$str = ltrim($matches[0], "#sql:");
$str = rtrim($str, ":");
$row = $this->result->fetch_assoc();
$str = $row[$str];
return $str;
} else {
return $matches[0];
}
}
for($i = 0; $i < $this->numOfRows; $i++) {
$argsArr = preg_replace_callback("/(#sql\:)\S+\:/", "change", $argsArr);
$this->tR(implode(",",$argsArr));
}
}
Где вы научились определять глобальную функцию в методе класса? Это не javascript. Сделайте функцию 'change' методом класса, и вы в порядке. – JustOnUnderMillions
Функция 'change' является _not_ методом этого объекта, но динамически созданной функцией в глобальном пространстве имен. Вы определенно можете определить такую функцию для динамического использования. Но это не более того. – arkascha
Я пробовал это, но когда я определяю функцию «change». как метод класса, возникает другая ошибка: 'preg_replace_callback(): требуется аргумент 2, 'change', чтобы быть действительным обратным вызовом в' – OneManWebDev