PHP每隔一个数组合并一次

PHP每隔一个数组合并一次,php,multidimensional-array,array-merge,Php,Multidimensional Array,Array Merge,只是好奇如果有人知道如何合并其他子数组 阿卡 或者。。。。 0+1 2+3 4+5 我想是这样的吧 $i=0; $new=array(); foreach($tmp as $k=>$v) { $tmp[$k] = $v; if($i=$k-1) { $new[] = $tmp[$i] + $tmp[$i-1]; /* or something ridiculous like that */ } $i++; } 这假定数组包含偶数个条目。如果情况并非如此,或者如

只是好奇如果有人知道如何合并其他子数组

阿卡

或者。。。。 0+1 2+3 4+5

我想是这样的吧

$i=0; $new=array();
foreach($tmp as $k=>$v) {
  $tmp[$k] = $v;
  if($i=$k-1) { 
    $new[] = $tmp[$i] + $tmp[$i-1]; /* or something ridiculous like that */
  }
  $i++;
} 

这假定数组包含偶数个条目。如果情况并非如此,或者如果您希望合并0+1、1+2、2+3,请将
$i
上的增量更改为1,并将
$j
的赋值更改为
$j=count($tmp)-1

$tmp = array();

$tmp[0] = array(false);
$tmp[1] = array(false);

$tmp[2] = array(true);
$tmp[3] = array(true);

$new = array();
for( $i = 0, $j = count( $tmp); $i < $j; $i += 2)
{
    $new[] = array_merge( $tmp[$i], $tmp[$i+1]);
}
$new=array();
对于($i=0,$cnt=count($tmp);$i<$cnt;$i+=2){
$new[]=$tmp[$i]+$tmp[$i+1];
}
使用,您可以想出一个相当简单的解决方案

<?php

$result = array_chunk($tmp, 2);

foreach ($result as &$chunk)
{
    $chunk = array_merge($chunk[0], $chunk[1]);
}

你也可以用它来写。如果一个区块有两个以上的元素,
调用_user\u func\u array('array\u merge',$chunk)
也可以。噢!甚至更好。感谢您的输入。尽管这看起来很棘手且“很好”-但我永远不会在生产环境中编写如此不明显的代码(是的,对我来说,它看起来有点难以阅读和理解)。具有奇数个条目的数组会导致此操作失败,并出现“注意:未定义的偏移量:”和“致命错误:不支持的操作数类型”,正如我在下面所说的。@nickb:的确如此,但我并没有完成@ehime所有工作的目标,而是给了他一个如何编写基础的想法。顺便说一句,如果
$tmp[$i]
不是一个数组,而是一个对象,它将失败,我不会处理它,因为它不在问题的范围之内;所以这不是问题。编辑这篇文章并否决它到底有什么意义,特别是在它被解决和接受之后。荒唐的
array(2) {
  [0]=>
  array(2) {
    [0]=>
    bool(false)
    [1]=>
    bool(false)
  }
  [1]=>
  array(2) {
    [0]=>
    bool(true)
    [1]=>
    bool(true)
  }
}
$new = array();
for ($i = 0, $cnt = count($tmp); $i < $cnt; $i += 2) {
    $new[] = $tmp[$i] + $tmp[$i + 1];
}
<?php

$result = array_chunk($tmp, 2);

foreach ($result as &$chunk)
{
    $chunk = array_merge($chunk[0], $chunk[1]);
}