PHP数组\映射回调函数内部函数

PHP数组\映射回调函数内部函数,php,arrays,array-map,Php,Arrays,Array Map,我有一个名为createCost的函数,在该函数中,我有一个接受数组的array\u map,还有一个名为checkDescription的函数,它位于createCost的内部。以下是一个例子: public function createCost{ $cost_example = array(); function checkDescription($array_item) { return $array_item; } $array_mapped = arr

我有一个名为
createCost
的函数,在该函数中,我有一个接受数组的
array\u map
,还有一个名为
checkDescription
的函数,它位于
createCost
的内部。以下是一个例子:

public function createCost{

  $cost_example = array();
  function checkDescription($array_item)
  {
    return $array_item;
  }

  $array_mapped = array_map('checkDescription', $cost_example);
}
当我运行这个时,我得到一个

array_map() expects parameter 1 to be a valid callback, function 'checkDescription' not found or invalid function name
据我所知,它在
createCost
之外查找函数
checkDescription
,但如何从内部调用
checkDescription

你喜欢这样吗

public function createCost(){
    $cost_example = array();
    $array_mapped = array_map(function ($array_item){
        return $array_item;
    }, $cost_example);
}

为什么不把函数赋给一个变量呢

public function createCost{

  $cost_example = array();
  $checkDescription = function ($array_item) {
                          return $array_item;
                      }

  $array_mapped = array_map($checkDescription, $cost_example);
}

这难道不是更具可读性吗?

应该可以,但以后会因为其他原因而失败…一个简单的匿名函数怎么样…?嵌套函数!?!这是不明智的,通常会被误解,因为函数从来都不是真正的“嵌套的”。。。但是您的类是否具有名称空间,例如?@deceze并不是真的,因为我对Array_Map的理解是,它查找存在于Map之外的函数……不确定您的意思,但它工作得很好:@deceze不必担心。。。。因为下面的答案,所以都被分类了