-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 に答える