首页 > 解决方案 > 从 PHP 数组中删除重复值

问题描述

我有这个代码

<?php
$query1 = "SELECT users.id,
testtable_result.id as result_id,
testtable_result.user_id,
testtable_result.cad_id,
testtable_result.medication,
testtable_result.color,
testtable_category.category_id,
testtable_category.name
FROM users
INNER JOIN testtable_result
ON testtable_result.user_id=users.id
INNER JOIN testtable_category
ON testtable_result.cad_id=testtable_category.category_id
WHERE users.id = '{$userID}' AND color LIKE '%blue%';";
$result1 = query($query1);
confirm($result1);
if (row_count($result1) > 0) :
while($row1 = fetch_Array($result1)) {
  $medication = $row1['medication'];
  $data[] = $row1;
}
foreach ($data as $value) {
$categoryname = $value['name'];
$medication = $value['medication'];
$arrmaincatname = explode('(', rtrim($categoryname, ')'));
if($categoryname == "Saba"){
$datacat = $arrmaincatname[0];
$medicacat = $medication; ?>
In <?php echo $datacat; ?> category -- [<?php echo $medicacat ?>]
<?php
}} ?>

它显示这样的结果
在 Saba 类别中 - [ProAir RespiClick®] 在 Saba 类别中 - [Proventil® HFA]

我想删除所有重复的结果并希望这样显示。
在 Saba 类别中 -- [ProAir RespiClick®、Proventil® HFA]

标签: phparraysmysqli

解决方案


您可以使用 foreach 对结果进行分组,然后使用第二个来显示您希望的打印组。

<?php
$categories = [];
foreach ($data as $value) {
    $categoryname = $value['name'];
    $medication = $value['medication'];
    $arrmaincatname = explode('(', rtrim($categoryname, ')'));
    if ($categoryname == "Saba") {
        $categories[$arrmaincatname[0]][] = $medication;
    }
}
foreach ($categories as $categoryName => $category) {?>
    In <?php echo $categoryName; ?> category -- [<?php echo implode(', ', $category) ?>]
    <?php
}

推荐阅读