I want to remove duplicate values from multidimensional array. I have a array output like this:-
0 =>
array (size=4)
'product_category' => string 'Apparel' (length=7)
'product_sub_cat' => string 'T-Shirts' (length=8)
'product_type' => string 'T-Shirts' (length=8)
'count' => int 14
1 =>
array (size=4)
'product_category' => string 'Apparel' (length=7)
'product_sub_cat' => string 'Hoodies & Sweatshirts' (length=21)
'product_type' => string 'Hoodies & Sweatshirts' (length=21)
'count' => int 5
2 =>
array (size=4)
'product_category' => string 'Apparel' (length=7)
'product_sub_cat' => string 'Sweaters' (length=8)
'product_type' => string 'Sweaters' (length=8)
'count' => int 1
3 =>
array (size=4)
'product_category' => string 'Sports & Entertainment' (length=22)
'product_sub_cat' => string 'Team Sports' (length=11)
'product_type' => string 'Basketball' (length=10)
'count' => int 1
4 =>
array (size=4)
'product_category' => string 'Sports & Entertainment' (length=22)
'product_sub_cat' => string 'Other Sports & Entertainment Products' (length=37)
'product_type' => string 'Other Sports & Entertainment Products' (length=37)
'count' => int 1
I want to remove Apparel and Sports & Entertainment which is showing multiple times. I want to remove 'Product_category' repeated values. Below is my code
$stmt = $pdo->prepare("SELECT `product_category`, `product_sub_cat`, `product_type` FROM `search` WHERE product_name LIKE {$string}
OR `product_type` like '%" . $keyword . "%' OR `product_sub_cat` like '%" . $keyword . "%' ORDER BY `product_type`
LIKE '%" . $keyword . "%' DESC, `product_name`LIKE '%" . $keyword . "%' DESC ");
$stmt->execute();
$RelatedCategoryProduct = $stmt->fetchAll(PDO::FETCH_ASSOC);
//------------------------------- Count and Remove Duplicate Related Category Array values ------------------------------
function unserialize_unique_count($input, $k = 'count') {
$a = [];
foreach ($input as $d) {
$s = serialize($d);
$a[$s] = (isset($a[$s]) ? ($a[$s] + 1) : 1);
}
foreach ($a as $s => $c) {
$a[$s] = unserialize($s) + [ $k => $c];
}
return array_values($a);
}
$grouped_with_count = unserialize_unique_count($RelatedCategoryProduct);
Above code is only removing the duplicate values of 'product_type'. I also want to remove the duplicate values of 'product_category' index. Thanks in advance.
Edit
I want result like this:-
0 =>
array (size=4)
'product_category' => string 'Apparel' (length=7)
'product_sub_cat' => string 'T-Shirts' (length=8)
'product_type' => string 'T-Shirts' (length=8)
'count' => int 14
1 =>
array (size=4)
'product_sub_cat' => string 'Hoodies & Sweatshirts' (length=21)
'product_type' => string 'Hoodies & Sweatshirts' (length=21)
'count' => int 5
2 =>
array (size=4)
'product_sub_cat' => string 'Sweaters' (length=8)
'product_type' => string 'Sweaters' (length=8)
'count' => int 1
3 =>
array (size=4)
'product_category' => string 'Sports & Entertainment' (length=22)
'product_sub_cat' => string 'Team Sports' (length=11)
'product_type' => string 'Basketball' (length=10)
'count' => int 1
4 =>
array (size=4)
'product_sub_cat' => string 'Other Sports & Entertainment Products' (length=37)
'product_type' => string 'Other Sports & Entertainment Products' (length=37)
'count' => int 1
Have a look at the front end view..