2011-11-08 9 views
-2

興味があるだけ他のすべての配列をマージPHP、誰かが他のすべてのサブアレイをマージする方法を知っている場合

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

特にこれを解決して受け入れた後、これを編集してダウンボトムするのは正確でしたか?ばかげた.... – ehime

答えて

1

あなたはかなり単純な解決策を考え出すことができるarray_mergearray_chunkを使用して

<?php 

$result = array_chunk($tmp, 2); 

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

チャンクに2つ以上の要素がある場合、 'call_user_func_array( 'array_merge'、$ chunk)'も同様に機能します。 –

+0

Ooh!さらに良い。入力いただきありがとうございます。 – adlawson

+1

でも、これは面倒で見栄えが良いようですが、私はそのような明白でないコードをプロダクションに書くことはありません(はい、私にとっては読みにくく、理解するのが少し難しいです) – zerkms

0

これは、配列エントリの偶数個が含まれていることを前提としています。そうでない場合、またはあなたが、0 + 1、+ 2 1、+ 3 2をマージ1に$iの増分を変更し、$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]); 
} 

$jの割り当てを変更するために探しているなら出力

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

[array_walk](http://php.net/manual/en/function.array-walk.php)でもこれを書くことができます。 – ssamuel

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

奇数個のエントリを持つ配列は、以下のように、「Notice:Undefined offset:」および「Fatal error:Unsupported operand types」で失敗します。 – nickb

+0

@nickb:確かに、@ ehimeのすべての作業を行うという目標はありませんでしたが、ベースを書く方法を彼に与えました。 Btwは '$ tmp [$ i]'が配列ではなくオブジェクトである場合には失敗し、質問スコープから外れているので処理しません。 – zerkms

+0

常に偶数があり、オブジェクトの場合は常に文字列キャストを使用できます$ mp =(array)$ tmp;だからそれは非問題です。 – ehime

関連する問題