Функция обратного вызова php в классе

по каким-то причинам наша хостинговая компания использовала PHP 5.2 и даже не предустанавливала предустановки mysqli и PDO.

У меня нет выбора, кроме как переписать часть моего кода, чтобы сделать его совместимым с 5.2.

Вот мой вопрос:

В PHP 5.2 Анонимная функция не поддерживается, поэтому я сделал следующий тест, чтобы убедиться, что я правильно меняю код:

class foo{ public function toString(){ $arr = array("a", "b"); $arr2 = array("c", "d"); print_r(array_map('mapKeyValue', $arr, $arr2)); } private function mapKeyValue($v, $k){ return $k."='".$v."'"; } } $foo = new foo(); echo $foo->toString(); 

но выше сказанное дало бы мне:

 Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in .... PHP Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in .... 

каков правильный способ:

 array_map('mapKeyValue', $arr, $arr2); 

внутри класса?

PS: Это достаточно хорошая причина для изменения хостинговой компании, потому что они используют PHP 5.2? (У меня контракт с 7 месяцами)

Solutions Collecting From Web of "Функция обратного вызова php в классе"

Используйте $this и массив в качестве обратного вызова:

 array_map( array( $this, 'mapKeyValue'), $arr, $arr2); 

И, чтобы быть уверенным, это проверено с помощью PHP 5.2.17 и подтверждено, что оно работает.

Попробуйте использовать:

 print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2)); 

Вам нужно вызвать функцию, используя $ this.

 array_map(array($this, 'mapKeyValue'), $arr, $arr2); 

Убедитесь, что ваш метод обратного вызова является общедоступным .

 public function mapKeyValue($v, $k){ return $k."='".$v."'"; } print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));