>  기사  >  백엔드 개발  >  중첩된 연관 배열의 차이점을 효율적으로 비교하는 방법은 무엇입니까?

중첩된 연관 배열의 차이점을 효율적으로 비교하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-09 01:04:02982검색

How to Efficiently Compare Nested Associative Arrays for Differences?

중첩 연관 배열의 차이점 비교

프로그래밍의 맥락에서 다차원 연관 배열을 다룰 때 다음이 필요한 경우가 많습니다. 내용을 비교하고 차이점을 식별합니다. 두 개의 배열이 있는 시나리오를 생각해 보십시오.

$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'],
];

목표는 $parentpage에 없는 $pageids의 행을 찾는 것입니다. 배열에 중첩된 연관 배열이 포함된 경우 array_diff_assoc()만 사용하면 원하는 결과를 얻지 못할 수 있습니다. 이 문제를 해결하기 위해 array_map() 및 unserialize()를 활용할 수 있습니다.

$pageWithNoChildren = array_map('unserialize',
    array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));

먼저 array_map()은 $pageids 및 $parentpage의 하위 배열을 반복하고 각 하위 배열을 serialize()를 사용한 문자열 표현. 이는 다차원 배열을 문자열을 요소로 하는 1차원 배열로 효과적으로 변환합니다.

다음으로 array_diff()는 하위 배열의 문자열 표현을 비교하고 차이점만 포함된 배열을 반환합니다. 그런 다음 결과 배열은 array_map()으로 다시 전달되며, 이는 각 문자열을 반복하고 unserialize()를 사용하여 원래 하위 배열 표현으로 다시 직렬화 해제합니다.

결과적으로 $pageWithNoChildren에는 다음 배열이 포함됩니다. $parentpage에 없는 $pageid의 행을 나타내는 하위 배열. 이 접근 방식은 중첩된 연관 배열의 내용을 효과적으로 비교하고 원하는 차이점을 제공합니다.

위 내용은 중첩된 연관 배열의 차이점을 효율적으로 비교하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.