- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试对对象数组使用 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/
这个问题在这里已经有了答案: Using `$this` in an anonymous function in PHP pre 5.4.0 (5 个答案) 关闭 9 年前。 如果要执行以下操作:
array_filter — Filters elements of an array using a callback function array array_filter ( array $in
我正在使用 array_filter 来做这样的事情: function endswithy($value) { return (substr($value, -1) == 'y'); } $
我正在尝试对对象数组使用 array_filter,并使用 foo 类的公共(public)方法作为回调。我不知道该怎么做。 我得到了这个结果:Fatal error: Using $this whe
这个问题在这里已经有了答案: Is there a function to extract a 'column' from an array in PHP? (15 个答案) 关闭 9 天前。 我试
我正在使用 array_filter在 PHP 中,当名为 type 的键的值与特定字符串匹配时,拆分包含多个数组的数组。这是它的样子: 样本数组 $arr[] = Array ( [0] =
我有两个数组: $arr1 = array('a' => 10, 'b' => 20); $arr2 = array('a' => 10, 'b' => 20, 'c' => 30); 如何使用 ar
我有一个包含一些关联数组的索引数组,我应用了一个简单的 $my_arr = array_filter($my_arr, function($obj) { return $obj["value"
我得到了这个名为 $files[] 的多数组,它由如下键和值组成: [0] => Array ( [name] => index1.php [path] => http://local
我有以下代码: function lower_than_10($i) { return ($i < 10); } 我可以用来过滤这样的数组: $arr = array(7, 8, 9, 10,
我在 php 中使用 array_filter: $new_array = array_filter($updated, "check_if_value_is_null_or_false"); fun
我可以以及如何使用 PHP 的 array_filter 来过滤以下数组结构中的空白/空条目? 来自:该数组来自使用 Fetch BOTH 的 PDO 调用,因此在这种情况下数字值和命名值始终相等。
这个问题在这里已经有了答案: Reference: What is variable scope, which variables are accessible from where and what
我来自 JS 世界,无法理解这段代码: function getCountryName($code, $codes){ print_r($code); array_filter( $c
我对array_filter很熟悉,想往功能上想,但我想知道有没有办法保留被丢弃的值?例如,如果我有一个像这样的数组: 2; }); 结果将是:array( 3, 4 )。 有没有办法保留丢弃的值
我来自 JS 世界,无法理解这段代码: function getCountryName($code, $codes){ print_r($code); array_filter( $c
我对array_filter很熟悉,想往功能上想,但我想知道有没有办法保留被丢弃的值?例如,如果我有一个像这样的数组: 2; }); 结果将是:array( 3, 4 )。 有没有办法保留丢弃的值
一旦条件满足数组的一个元素,我们可以中断回调的执行吗? 例如。 $a = array(1,2,3,4,5); foreach($a as $val){ if ($val == 3){
这个问题在这里已经有了答案: array_count_values() with objects as values (3 个答案) 关闭 4 个月前。 如何防止为我要搜索的每个值重复相同的代码块?
我的方法的签名如下所示: public function ProgramRuleFilter(&$program, $today=null) { 当我这样调用它时, $programs = array
我是一名优秀的程序员,十分优秀!