これは非常に簡単な答えであるはずです。私はおそらくただ太っているだけですが、PHP には 2 つの配列があります。
$data1 = array(
array(
'qid' => 'q-prof-1-1',
'value' => 10,
),
array(
'qid' => 'q-prof-2-1',
'value' => 3,
),
);
$data2 = array(
array(
'qid' => 'q-prof-2-1',
'value' => 5,
),
array(
'qid' => 'q-prof-3-2',
'value' => 1,
),
);
そして、私は次の結果を得たいと思っています:
$result = array(
array(
'qid' => 'q-prof-1-1',
'value' => 10,
),
array(
'qid' => 'q-prof-2-1',
'value' => 5,
),
array(
'qid' => 'q-prof-3-2',
'value' => 1,
),
);
... 2 つがマージされるように - ただし、別の qid に一致する qid が見つかった場合は、後者に置き換えます。
array_merge()
、array_merge_recursive()
、$data1 + $data2
、$data2 + $data1
、array_replace()
、などを組み合わせてみましたがarray_replace_recursive()
、array_diff()
どのオプションも 3 つではなく 2 つまたは 4 つの値を返すようです。そしてもちろん、私は SO ハンティングのかなりの分担をしました。
何か案は?あらゆる種類の大規模な反復関数よりも、短くて甘いものを好むでしょう!
前もって感謝します:)マット
編集:
$data1 と $data2内の配列をキーと値のペアに変換すると、これらのマージおよび置換関数のほとんどが機能することに気付きました。
$data1 = array(
'q-prof-1-1' => array(
'qid' => 'q-prof-1-1',
'value' => 10,
) // ... etc etc
);
...しかし、元のデータを変更する必要はありません。