gpt4 book ai didi

php - 如何将参数发送到 PHP 中的比较函数?

转载 作者:行者123 更新时间:2023-12-04 23:20:52 24 4
gpt4 key购买 nike

首先,我完全使用 Yii 框架在 PHP 中工作,尽管 Yii 最终与这个问题关系不大。

我有一个类,其中有一个名为 $data 的数组。我想过滤掉数组中与我发送给类的参数不匹配的某些元素(我将在下面放置一些语法,以便您更好地理解)。因此,我正在使用 array_filter,它要求其输入之一是比较函数(即,为特定元素返回 true 或 false 的函数。任何导致返回“false”的函数都将从数组中删除)。

问题是因为输入的函数是在引号中输入的,所以我看不到在实际类中使用比较函数的方法。但是当函数在类之外时,我不能调用我需要的实例变量。所以我真正需要的是能够以某种方式调用类的实例变量外部,将实例变量作为参数发送给函数,或者以某种方式将比较函数保留在类中。

对此有什么想法吗?我提到的类是 Yii 中的一个小部件。下面是对该小部件的调用(不是那么重要)。相关参数是'params'。

$this->widget('application.widgets.CListViewParam', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'params'=>array('receiverId'=>Yii::app()->user->userId),
));

widget中类内有一个实例变量用来保存参数:

public $params = array();

然后调用array_filter和比较函数:

$data = array_filter($data, "filterData");

实际的比较函数并不重要,下面是骨架。请记住,它在类之外。

function filterData($item) {
// unable to access $this->params inside of this function!
}

最佳答案

如果它在类之外并且不能访问$this->params,那为什么不把它放在类里面:

class MyClass {

public $params;

public function widget() {
// ...
$filtered = array_filter($array, array($this, 'filterData'));
}

private function filterData($item) {
// $this->params is now accessible
}

}

关于php - 如何将参数发送到 PHP 中的比较函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com