php:数组对象迭代器实现的多态性?
我不知道数组是否真的是php上的对象。。。但是,我想要的是更改foreach循环上的数组行为 在java上类似于此: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 */ } 我真正
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
}