2 つの配列があり、これらの配列には に関する情報が含まれておりid
、次の形式です。linklabel
url
$pageids = [
['id' => 1, 'linklabel' => 'Home', 'url' => 'home'],
['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'],
['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'],
];
$parentpage = [
['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
];
$pageids
含まれているが含まれていない情報を見つけるために、これら 2 つを比較しようとしています。$parentpage
これにより、 という別の配列が作成され$pageWithNoChildren
ます。ただし、次のコードを使用すると:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
はarray_diff_assoc()
配列の最初のレベルで実行されるため、 と の両方$pageids
に$parentpages
[0] と [1] キーがあることがわかり、それらを無視して$pageids
[2] 以降のすべての情報を返します。ただし、ネストされた配列の内容を見て、それらをid
比較しlinklabel
たい。url
$pageids
$parentpages
最初の配列のキーではなく、ネストされた配列のキーで実行するようにするにはどうすればよいarray_diff_assoc()
ので、最終結果は の [0]、[3]、および [4] 配列の内容を含む配列になります$pageids
か?
期待される結果:
array (
0 =>
array (
'id' => 1,
'linklabel' => 'Home',
'url' => 'home',
),
3 =>
array (
'id' => 6,
'linklabel' => 'Logo Design',
'url' => 'logodesign',
),
4 =>
array (
'id' => 15,
'linklabel' => 'Content Writing',
'url' => 'contentwriting',
),
)