2016-08-26 12 views
0

私は2つの配列を持っています。PHPを使用した多次元連想配列のマージまたは更新

$all_labels = [ 
    'data'=> [ 
     ['label'=> NULL], 
     ['label'=> "C1.SNM"], 
     ['label'=> "C1.SSM"], 
     ['label'=> "C1.TAM"], 
     ['label'=> "C1.TIM"], 
     ['label'=> "C1.TNM"], 
     ['label'=> "C1.TOM"] 
    ] 
]; 

$non_complianceData3 = [ 
    'data'=> [ 
     ['label'=> "C1.TAM", 'value'=> "1674"], 
     ['label'=> "C1.TOM", 'value'=> "574"] 
    ] 
]; 

I、すなわちこれは、DBから入手可能なすべてのラベルを返し、塩基として作用する第一の配列を必要とします。一致するラベルで$non_complianceData3の配列データ値を使用してベースを更新する必要があります。この場合、ベース"C1.TAM"'value'=> "1674""C1.TOM"'value'=> "574"に更新する必要があります。

これを行うにはどうすればよいですか?

答えて

0

$all_labelsのラベルが異なっている場合は、この方法を行うことができます。

// reindex $all_labels['data'] by label 
$all_labels['data'] = array_column($all_labels['data'], null, 'label'); 

// assign the values from $non_complianceData3['data'] to the new keys 
foreach ($non_complianceData3['data'] as $item) { 
    $all_labels['data'][$item['label']] = $item; 
} 

$all_labelsのラベルが明瞭でない場合、それは次のように行うことができます。

// loop over the items in $non_complianceData3['data'] 
foreach ($non_complianceData3['data'] as $item) { 

    // find all of the matching labels in $all_labels['data'] and replace 
    // them with the corresponding $non_complianceData3['data'] items 
    foreach ($all_labels['data'] as $key => $value) { 
     if ($item['label'] == $value['label']) { 
      $all_labels['data'][$key] = $item; 
     } 
    } 
} 
+0

うわー、私は時間を費やして研究し、これを解決しようとしています!!これは私の最初の質問です。サービスとは、ちょうど大きな時間を節約しました。来週の締め切りを過ごすために週末に仕事をしています。どうもありがとうございました!! –

+0

お寄せいただきありがとうございます。あなたの締め切りと幸運! –