gpt4 book ai didi

对象上的 PHP array_filter

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:36:16 25 4
gpt4 key购买 nike

我正在尝试对对象数组使用 array_filter,并使用 foo 类的公共(public)方法作为回调。我不知道该怎么做。

我得到了这个结果:Fatal error: Using $this when not in object context 我猜是因为它以静态方式调用 bar 方法,但是如何将对象传递给array_filter 回调方法正确吗?

function foobar_filter($obj) {
return $obj->bar();
}

class foo {
private $value;
public function __construct($value) {
$this->value = $value;
}
public function bar() {
// checking if $this is set to avoid "using this when not in object yadayada"-message
if ($this) return ($this->value > 10);
else return false;
}
}

$arr = array(new foo(12), new foo(42), new foo(4));
var_dump($arr);

// Here is the workaround that makes it work, but I'd like to use the objects' method directly. This is the result that I am expecting to get from $arr3 as well
$arr2 = array_filter($arr, "foobar_filter");
var_dump($arr2);

// I would like this to work, somehow...
$arr3 = array_filter($arr, array(foo, "bar"));
var_dump($arr3);

所以我期望的结果是一个数组,其中包含类 foo 的两个对象,其值分别为 12 和 42。

供您引用,我使用的是 PHP 5.2.6,但如果可以使用任何 PHP 版本,我会很高兴。

最佳答案

你可以像这样在 array_filter 方法中使用 Closure (>= PHP 5.3)

$arrX = array_filter($arr, function($element) {
return $element->bar();
});
var_dump($arrX)

关于对象上的 PHP array_filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017076/

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