如何向 usort() 传递参数?

7 浏览
0 Comments

如何向 usort() 传递参数?

我的代码:

function sortx($a, $b) {
    if(!strpos($a["p_title"],'apple ipad')) {
        return -1; 
    }
    return 1;
}
usort($arr, 'sortx');`

在上面的函数中,当调用函数时,我想传递$sort_text='apple ipad';,而不是将apple ipad硬编码到strpos()中。我该如何实现?

0
0 Comments

问题出现的原因是作者想要在使用usort()函数时传递参数,但不知道如何实现。

解决方法是使用闭包(closure)来调用usort()函数,并使用use子句传递额外的参数。闭包是一个匿名函数,可以在函数内部使用外部的变量。在上面的代码中,通过使用$sort_text变量,我们可以在闭包内部访问和使用该变量。

以下是修改后的代码:

$sort_text = 'apple ipad';
usort(
    $arr, 
    function ($a, $b) use ($sort_text) {
        if(!strpos($a["p_title"], $sort_text)) {
            return -1; 
        }
        return 1;
    }
);

通过使用闭包和use子句,我们成功地将参数$sort_text传递给了usort()函数。在闭包内部,我们可以使用$sort_text变量进行比较和排序操作。

这种方法非常简单和便捷,可以帮助我们在调用usort()函数时传递参数,以满足特定的需求。

0