Ответ 1
Из Руководство по обратным вызовам PHP:
Метод экземпляра объекта передается как массив, содержащий объект с индексом 0 и имя метода в индексе 1.
Итак, попробуйте
return array_map(array($this, 'encode'), $inp);
У меня есть метод ниже в одноэлементном классе
private function encode($inp)
{
if (is_array($inp) {
return array_map('$this->encode', $inp);
} else if is_scalar($inp) {
return str_replace('%7E', rawurlencode($inp));
} else {
return '';
}
}
это отлично работает как обычная функция
function encode($inp)
{
if (is_array($inp) {
return array_map('encode', $inp);
} else if is_scalar($inp) {
return str_replace('%7E', rawurlencode($inp));
} else {
return '';
}
}
при использовании внутри класса я получаю следующую ошибку:
PHP Предупреждение: array_map(): первый аргумент, '$ this- > rfc_encode', должен либо NULL, либо действительный обратный вызов
Пожалуйста, помогите мне исправить это.
Из Руководство по обратным вызовам PHP:
Метод экземпляра объекта передается как массив, содержащий объект с индексом 0 и имя метода в индексе 1.
Итак, попробуйте
return array_map(array($this, 'encode'), $inp);
Отпустите один код из $this- > encode.
> private function encode($inp) {
> if (is_array($inp) {
> return array_map($this->encode, $inp);
> } else if is_scalar($inp) {
> return str_replace('%7E', rawurlencode($inp));
> } else {
> return '';
> } }
Надеюсь, что эта проблема устранена.