You can use FilterIterator
$iterator = new SpecialFilter($items, 'special');
var_dump(iterator_to_array($iterator));
Output
array
'special_1' => string '3' (length=1)
'special_2' => string '5' (length=1)
'special_3' => string '6' (length=1)
Class Used
class SpecialFilter extends FilterIterator {
private $f;
public function __construct(array $items, $filter) {
$object = new ArrayObject( $items );
$this->f = $filter;
parent::__construct( $object->getIterator() );
}
public function accept() {
return 0 === strpos( $this->getInnerIterator()->key(), $this->f );
}
}