Php 如何将阵列天线切成两半?

Php 如何将阵列天线切成两半?,php,Php,我有这个密码 $second_half = $items; //ArrayIterator Object; $first_half = array_slice($second_half ,0,ceil(count($second_half)/2)); 这会发出警告警告:array_slice()希望参数1是array,给定的对象 有没有办法将ArrayIterator对象一分为二 基本上,我想要存储在$first\u half中的未知数量的项目的一半,剩余的项目$second\u half;结

我有这个密码

$second_half = $items; //ArrayIterator Object;
$first_half = array_slice($second_half ,0,ceil(count($second_half)/2));
这会发出警告警告:array_slice()希望参数1是array,给定的对象 有没有办法将
ArrayIterator
对象一分为二


基本上,我想要存储在
$first\u half
中的未知数量的项目的一半,剩余的项目
$second\u half
;结果将是两个具有两组不同项的
ArrayIterator
对象。

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

至于将结果的一半分配给新的
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 );
}
根据需要修改三元条件

$first_half = new LimitIterator($items, 0, ceil(count($items) / 2));
$second_half = new LimitIterator($items, iterator_count($first_half));

这将得到2个迭代器,它只允许您对原始
$items

的一半进行迭代。您能先将其具体化为一个数组吗?迭代器通常没有“长度”的概念,有些仅限于向前迭代。(我不使用PHP,但在我使用的所有语言中,这是划分“一半”所必需的步骤。如果只需要“一半在一个数组中,一半在另一个数组中”,那么只需要取一个,放在这里,取一个,放在那里,然后重复。)@pst
ArrayIterator
实现,它提供了一个
count
方法,在确定长度方面很有用。@JonathanSampson我总是对PHP感到惊讶。。。
$first_half = new LimitIterator($items, 0, ceil(count($items) / 2));
$second_half = new LimitIterator($items, iterator_count($first_half));