-2

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

又名

$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++;
} 
4

3 回答 3

2
$new = array();
for ($i = 0, $cnt = count($tmp); $i < $cnt; $i += 2) {
    $new[] = $tmp[$i] + $tmp[$i + 1];
}
于 2011-11-08T00:39:01.047 回答
1

使用array_chunkarray_merge你可以想出一个相当简单的解决方案

<?php

$result = array_chunk($tmp, 2);

foreach ($result as &$chunk)
{
    $chunk = array_merge($chunk[0], $chunk[1]);
}
于 2011-11-08T00:40:29.957 回答
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)
  }
}
于 2011-11-08T00:38:11.993 回答