Home > Article > Backend Development > How to Compare Associative Rows of 2-Dimensional Arrays in PHP?
Compare Associative Rows of 2-Dimensional Arrays: A Comprehensive Guide
Multi-dimensional arrays are a powerful way to organize data in PHP, but comparing them can be a challenge. This question explores how to effectively compare associative rows of two 2-dimensional arrays using the array_diff_assoc() function.
Challenge:
The objective is to identify and extract the rows from $pageids that are not present in $parentpage. The array_diff_assoc() function is designed to compare associative arrays, but it operates on the first level of the arrays, ignoring the nested rows.
The Problem:
The code provided:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
returns incorrect results because it ignores the nested rows and only considers the keys of the first level.
Solution:
The proposed solution involves converting each sub-array to a string representation using serialize(). This transforms the multi-dimensional arrays into one-dimensional arrays:
$diff = array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage));
Subsequently, the differences are converted back into sub-arrays using unserialize():
$pageWithNoChildren = array_map('unserialize', $diff);
This method effectively compares the contents of the nested rows, resulting in the following expected output:
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', ), )
The above is the detailed content of How to Compare Associative Rows of 2-Dimensional Arrays in PHP?. For more information, please follow other related articles on the PHP Chinese website!