PHP объединяет все остальные массивы - PullRequest
0 голосов
/ 08 ноября 2011

просто любопытно, если кто-то знает, как объединить все остальные подмассивы,

ака

$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 ]

2 голосов
/ 08 ноября 2011
$new = array();
for ($i = 0, $cnt = count($tmp); $i < $cnt; $i += 2) {
    $new[] = $tmp[$i] + $tmp[$i + 1];
}
1 голос
/ 08 ноября 2011

Используя array_chunk и array_merge, вы можете найти довольно простое решение

<?php

$result = array_chunk($tmp, 2);

foreach ($result as &$chunk)
{
    $chunk = array_merge($chunk[0], $chunk[1]);
}
0 голосов
/ 08 ноября 2011

Предполагается, что массив содержит четное количество записей. Если это не так или если вы хотите объединить 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)
  }
}
...