过滤ArrayObject的(PHP)(Filter ArrayObject (PHP))

2019-09-18 20:32发布

我有我的数据ArrayObject ,只是表示数组。 我需要对数据进行筛选 ,功能array_filter()将工作的伟大。 但是,它工作 ArrayObject作为参数。 什么是与此治疗的最好方法? 是否有它处理为我过滤任何标准的功能?

例:

$my_data = ArrayObject(array(1,2,3));
$result = array_object_filter($my_data, function($item) { return $item !== 2; });

是否有任何array_object_filter功能?

Answer 1:

你怎么样将其导出到一个实际的数组,然后创建一个新的数组对象?

$my_data = new ArrayObject(array(1,2,3));
$result = new ArrayObject( 
    array_filter( (array) $my_data, function($item) { 
         return $item !== 2; 
    })
);


Answer 2:

这个怎么样:

$my_data = new ArrayObject(array(1,2,3));
$callback = function($item) { return $item !== 2; };
$result = new ArrayObject;
foreach ($my_data as $k => $item) if ($callback($item)) $result[$k] = $item;

或者,你可以定义一个array_object_filter()函数自己:

function array_object_filter($array, $callback) {
    $result = new ArrayObject;
    foreach ($array as $k => $item) if ($callback($item)) $result[$k] = $item;
    return $result;
}


Answer 3:

如何继承的ArrayObject的并增加了新的方法吧:

/**
 * Filters elements using a callback function.
 *
 * @param callable $callback The callback function to use
 *
 * @return self
 */
public function filter(/* callable */ $callback = null)
{
    $this->exchangeArray(array_filter($this->getArrayCopy(), $callback));
    return $this;
}


文章来源: Filter ArrayObject (PHP)