gpt4 book ai didi

php - 如何将 ArrayIterator 一分为二?

转载 作者:行者123 更新时间:2023-12-04 22:07:16 26 4
gpt4 key购买 nike

我有这个代码

$second_half = $items; //ArrayIterator Object;
$first_half = array_slice($second_half ,0,ceil(count($second_half)/2));

这给出警告 Warning: array_slice() expects parameter 1 to be array, object given有没有办法将 ArrayIterator 对象一分为二?

基本上我想要一半的未知数量的项目存储在 $first_half 和剩余的项目 $second_half;结果将是两个具有两组不同项目的 ArrayIterator 对象。

最佳答案

看来您可以使用 getArrayCopy ArrayIterator 的方法。这将返回一个数组,然后您可以对其进行操作。

至于将一半结果分配给新的 ArrayIterator,将另一半分配给另一个 ArrayIterator,您不需要将其缩减为数组。您可以简单地使用迭代器本身的 countappend 方法:

$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/

26 4 0