PHP合并每个其他数组

时间:2011-11-08 00:31:24

标签: php multidimensional-array array-merge

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

又名

$tmp = array();

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

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

$tmp[4] = array(false);
$tmp[5] = array(false);

或.... 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++;
} 

3 个答案:

答案 0 :(得分:2)

$new = array();
for ($i = 0, $cnt = count($tmp); $i < $cnt; $i += 2) {
    $new[] = $tmp[$i] + $tmp[$i + 1];
}

答案 1 :(得分:1)

使用array_chunkarray_merge,您可以提出一个相当简单的解决方案

<?php

$result = array_chunk($tmp, 2);

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

答案 2 :(得分:0)

这假设数组包含偶数个条目。如果不是这种情况,或者您要合并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]);
}

<强>输出

array(2) {
  [0]=>
  array(2) {
    [0]=>
    bool(false)
    [1]=>
    bool(false)
  }
  [1]=>
  array(2) {
    [0]=>
    bool(true)
    [1]=>
    bool(true)
  }
}