我有这个代码
$second_half = $items; //ArrayIterator Object;
$first_half = array_slice($second_half ,0,ceil(count($second_half)/2));
这给出了警告 警告:array_slice() 期望参数 1 为数组,对象给定
有没有办法将
ArrayIterator
对象一分为二?基本上我想要
$first_half
中存储的未知数量的项目的一半,其余项目 $second_half
;结果将是具有两组不同项目的两个 ArrayIterator
对象。 最佳答案
看起来您可以使用 ArrayIterator 的 getArrayCopy
方法。这将返回一个您可以操作的数组。
至于将一半的结果分配给一个新的 ArrayIterator
,另一半分配给另一个 ArrayIterator
,你不需要将它减少到一个数组。您可以简单地使用迭代器本身的 count
和 append
方法:
$group = new ArrayIterator;
$partA = new ArrayIterator;
$partB = new ArrayIterator;
$group->append( "Foo" );
$group->append( "Bar" );
$group->append( "Fiz" );
$group->append( "Buz" );
$group->append( "Tim" );
foreach ( $group as $key => $value ) {
( $key < ( $group->count() / 2 ) )
? $partA->append( $value )
: $partB->append( $value );
}
这导致构建了两个新的
ArrayIterator
:ArrayIterator Object ( $partA )
(
[0] => Foo
[1] => Bar
[2] => Fiz
)
ArrayIterator Object ( $partB )
(
[0] => Buz
[1] => Tim
)
根据需要修改三元条件。
关于php - 如何将 ArrayIterator 一分为二?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10135591/