по каким-то причинам наша хостинговая компания использовала 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 месяцами)
Используйте $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));