如果我在类函数中使用array_walk
来调用同一个类的另一个函数
class user
{
public function getUserFields($userIdsArray,$fieldsArray)
{
if((isNonEmptyArray($userIdsArray)) && (isNonEmptyArray($fieldsArray)))
{
array_walk($fieldsArray, 'test_print');
}
}
private function test_print($item, $key)
{
//replace the $item if it matches something
}
}
它给我以下错误 -
警告:
中array_walk()
[function.array-walk]:无法呼叫test_print()
- 函数不存在于......
那么,如何在使用$this->test_print()
时指定array_walk()
?
答案 0 :(得分:67)
如果要将类方法指定为回调,则需要指定它所属的对象:
array_walk($fieldsArray, array($this, 'test_print'));
来自manual:
实例化对象的方法作为包含索引0处的对象和索引1处的方法名称的数组传递。
答案 1 :(得分:6)
如果你需要在没有实例化类的情况下调用静态方法,你可以这样做:
// since PHP 5.3
array_walk($fieldsArray, 'self::test_print');
或者从外面:
// since PHP 5.5
array_walk($fieldsArray, User::class.'::test_print');
答案 2 :(得分:1)
要在另一个类方法中将类方法作为回调函数调用,您应该执行以下操作:
public function compareFucntion() {
}
public function useCompareFunction() {
usort($arrayToSort, [$this, 'compareFucntion'])
}