次の構造例を持つ2つの配列があります。
$json1 = '[[
{
"Str1":"ABC",
"Str2": "Some Value",
"Str3": "Something"
},
{
"Str1": "DEF",
"Str2": "Another Value",
"Str3": "Test"
},
{
"Str1": "GHI",
"Str2": "NULL",
"Str3": "Blah"
}]]';
$json2 = '[{
"ID": "1",
"ABC": "Hello",
"DEF": "Test",
"GHI": "Something"
}]';
$arr1 = json_decode($json1);
$arr2 = json_decode($json2);
「キーで」PHPに参加してもらいたい。キーはID
、ABC
、DEF
、(単なる例名)等
キーは、配列1の配列の名前です。また、配列2のすべての配列の最初のエントリはです。残念ながら、それらは異なる順序になっています。
したがって、両方の配列を繰り返し、キーが同じであるかどうかを確認する必要があります。同じである場合は、配列2の値を配列1にコピーします。このようなもの:
if($array1[$key] == $array2[$key]){
$array1[$key] += $array2[$key];
}
望ましい結果は、いくつかの配列がそれらの「キー」によってマージされただけです。
[0] => array(4){
"ABC" => "Hello",
"Str 1" => "ABC",
"Str 2" => "Some Value",
"Str 3" => "Something"
}
[1] => array(4){
"DEF" => "Test",
"Str 1" => "DEF",
"Str 2" => "Another Value",
"Str 3" => "Test"
}
[2] ...
これが私の解決策です:
foreach ($arr1[0] as $key => $entry) {
$arr1[0][$key][$arr1[0][$key]["Str1"]] = $arr2[0][$entry["Str1"]];
}
これにより、次の出力が生成されます。
[
[
{
"Str1":"ABC",
"Str2":"Some Value",
"Str3":"Something",
"ABC":"Hello"
},
{
"Str1":"DEF",
"Str2":"Another Value",
"Str3":"Test",
"DEF":"Test"
},
{
"Str1":"GHI",
"Str2":"NULL",
"Str3":"Blah",
"GHI":"Something"
}
]
]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加