php 使用数组作为 array_map 第一个参数

发布于 2024-12-25 17:00:13 字数 364 浏览 2 评论 0原文

我无法弄清楚第一个返回语句,任何人都可以帮助解释它是如何工作的吗? array_map 接受第一个参数的函数,但这里是一个数组。 array(&$this, '_trimData') 是如何工作的?感谢您的解释。

private function _trimData($mParam)
{       
    if (is_array($mParam))
    {
        return array_map(array(&$this, '_trimData'), $mParam);
    }

    $mParam = trim($mParam);

    return $mParam;
}    

I can't kind of make out the first return statement, can anybody help to explain how it works?
the array_map accept a function for the first arg, but here is an array. and how does array(&$this, '_trimData') work? thanks for explaining.

private function _trimData($mParam)
{       
    if (is_array($mParam))
    {
        return array_map(array(&$this, '_trimData'), $mParam);
    }

    $mParam = trim($mParam);

    return $mParam;
}    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

榕城若虚 2025-01-01 17:00:13

这是一个递归函数。如果传递给它的参数是一个数组,_trimData 会调用自身。

array(&$this, '_trimData') 是一个 回调当前对象的方法_trimData

整个方法实际上可以替换为:

private function _trimData($mParam)
{ 
    array_walk_recursive($mParam, 'trim');
    return $mParam;
}

This is a recursive function. _trimData calls itself if the parameter passed to it was an array.

array(&$this, '_trimData') is a callback to the current object's method _trimData.

The entire method could really be replaced with:

private function _trimData($mParam)
{ 
    array_walk_recursive($mParam, 'trim');
    return $mParam;
}
醉生梦死 2025-01-01 17:00:13

它是回调:$this->_trimData()(对象$this_trimData

It is callback: $this->_trimData() (_trimData of object $this)

最后的乘客 2025-01-01 17:00:13

进一步解释一下 array(&$this, '_trimData') 如何充当回调,尽管看起来像一个数组:

PHP 函数通过其名称作为字符串传递...实例化对象的方法作为数组传递,该数组包含索引 0 处的对象和索引 1 处的方法名称。 PHP:回调/可调用

所以在这种情况下,对象是 &$this 方法是_trimData,并将其放入数组是 PHP 允许您将其作为回调传递到 array_map 的一种方式。

A bit further of an explanation about how array(&$this, '_trimData') acts as a callback, despite looking like an array:

A PHP function is passed by its name as a string... A method of an instantiated object is passed as an array containing an object at index 0 and the method name at index 1. PHP: Callbacks/Callables

So in this case, the object is &$this and the method is _trimData, and making it into an array is one way PHP allows you to pass it as a callback into array_map.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文