2012-04-16 6 views
-2

こんにちは、値が同じレコードに接続する方法はありますか?PHP配列からレコードに結合する方法

[12]=> Array (
[ID] => 127078 
[row1] => 
[post] => N16 7UJ 
) 

[13]=> Array (
[ID] => 127078 
[row1] => something 
[post] => 
) 

よう

とあなたはこのようなarray_replace array_merge foreach while Iterator

富栄として非常に多くのオプションを持っている

[12]=> Array (
[ID] => 127078 
[row1] => something 
[post] => N16 7UJ 
) 
+0

はちょうど私が怖い "コードを書く" 作業を取ります。ループするには 'foreach'を使い、結合したいかどうかを調べて、希望のアイテム/配列を作ります。 – Nanne

答えて

0

は、ここでは、この機能

<?php 

$array = array(
       12 => array (
       "ID" => '127078', 
       "row1" => '', 
       "post" => 'N16 7UJ', 
       ), 

       13 => array (
       "ID" => '127078', 
       "row1" => 'something', 
       "post" => '', 
       ) 

      ); 
function mergedup($array,$matcher){ 
    if(!function_exists('remove_element')){ 
     function remove_element($arr,$element){ 
      $ret_arr = array(); 
      foreach($arr as $val){ 
       if($val !== $element){ 
        array_push($ret_arr,$val); 
       } 
      } 
      return $ret_arr;  
     } 
    } 
    $array = remove_element($array,array()); 
    $return_array = array(); 

    while(isset($array[0])){ 
     $temp = $array[0]; 
     $array = remove_element($array,$temp); 
     $array_temp = array(); 
     foreach($array as $vals){ 
      if($temp[$matcher]==$vals[$matcher]){ 
       array_push($array_temp,$vals); 
       foreach($temp as $key => $val){ 
        if(empty($temp[$key])){ 
         $temp[$key] = $vals[$key]; 
        } 
       } 
      } 
     } 
     foreach($array_temp as $vals){ 
      $array = remove_element($array,$vals); 
     } 
     array_push($return_array,$temp); 
    } 

    return $return_array; 
} 

var_dump(mergedup($array,"ID")); 
?> 

テストおよび

+0

array(1){[0] => array(3){["ID"] => string(6) "127078" ["row1"] =>文字列(9) "something" ["post"] =>文字列(7) "N16 7UJ"}}私のマシンの出力 –

+0

ありがとう – domos

0

ようにしますあなたは簡単に

$array[12] = array("ID"=>127078,"row1"=>"","post"=>"N16 7UJ"); 
$array[13] = array("ID"=>127078,"row1"=>"something","post"=>""); 
var_dump($array[12]); 

array_replacehttp://www.php.net/manual/en/function.array-replace.php

$array[13] = array_filter($array[13]); //Filter Replacement 
$array[12]= array_replace($array[12],$array[13]); 

array_mergehttp://php.net/manual/en/function.array-merge.php

//$array[12] = array_filter($array[12]); //Optinal 
$array[13] = array_filter($array[13]); //Filter Spaces 
$array[12]= array_merge($array[12],$array[13]); 
var_dump($array[12]); 
を交換された配列を選択することができますので、T Iは、 array_replace好みます

出力

array 
    'ID' => int 127078 
    'row1' => string 'something' (length=9) 
    'post' => string 'N16 7UJ' (length=7) 
+0

あなたが11/12か12/13のためにそれを望むかどうかチェックしなければならないでしょうか、結果は何か... – Nanne

+0

私はそれが問題ではないと思っていましたが、修正されました... @Nanne – Baba

+1

私は彼が(少なくとも)13の部分で大きな配列を持っていると仮定しています。今は12と13に参加したいと思うなら、確かに、1から100しか持っていなくても、 "参加したい"という人がいれば)、ちょうど..うまく書かなければならないでしょう。あなたがそれを望んでいるかどうかをチェックして、最後に明らかにマージを使用することができます:) – Nanne

関連する問題