php:数组对象迭代器实现的多态性?

php:数组对象迭代器实现的多态性?,php,iterator,polymorphism,Php,Iterator,Polymorphism,我不知道数组是否真的是php上的对象。。。但是,我想要的是更改foreach循环上的数组行为 在java上类似于此: for( String it : myArr = new Array_Iterator( array) implements Iterator{ public Array_Iterator( String[] arr){ this.arr = arr} /* interface implementation */ }){ /* loop */ } 我真正

我不知道数组是否真的是php上的对象。。。但是,我想要的是更改foreach循环上的数组行为

在java上类似于此:

for( String it : myArr = new Array_Iterator( array) implements Iterator{
    public Array_Iterator( String[] arr){ this.arr = arr}
    /* interface implementation */
}){
    /* loop */
}

我真正想要完成的是一种过滤器,这样我就不会从数组中获取我不想要的条目,你可能正在寻找PHP函数

迭代输入中的每个值 数组将它们传递给回调函数 功能。如果调用回调函数 返回true,即来自的当前值 输入被返回到结果中 数组。保留数组键


如果您喜欢基于迭代器的方法,您还可以查看,尤其是结合。

如果您想要的是一种数组元素的过滤器,请尝试。创建一个函数,如果要保留元素,则返回true;如果不保留元素,则返回false,然后将其传递给
array\u filter

只需将数组包装成一个,您就可以自由覆盖常规方法。提供了许多其他功能,您可能会发现这些功能很有用。要通过迭代器过滤数组,可以使用

PHP手册中的示例:

<?php
// This iterator filters all values with less than 10 characters
class LengthFilterIterator extends FilterIterator {
    public function accept() {
        // Only accept strings with a length of 10 and greater
        return strlen(parent::current()) > 10;
    }
}

$arrayIterator = new ArrayIterator(array('test1', 'more than 10 characters'));
$lengthFilter = new LengthFilterIterator($arrayIterator);

foreach ($lengthFilter as $value) {
    echo $value . "\n"; // ignores "test1" in array
}