我有我的数据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
功能?
你怎么样将其导出到一个实际的数组,然后创建一个新的数组对象?
$my_data = new ArrayObject(array(1,2,3));
$result = new ArrayObject(
array_filter( (array) $my_data, function($item) {
return $item !== 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;
}
如何继承的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;
}