【问题标题】:Remove duplicate and count them in row删除重复项并按行计数
【发布时间】:2019-07-07 09:27:49
【问题描述】:

我想删除重复的条目,然后对它们进行计数,以便在我的 php ROW 中的条目旁边显示它们

我已经试过了:

<?php                                       
foreach (array_unique($events) as $eventorga) {                                     
$eventorgan = $eventorga['organizer'];                                      
echo $eventorga['organizer'].'</br>';                                       
}                                       
?>

但是一个错误:数组到字符串的转换返回给我

<?php
foreach ($events as $eventorga) {
echo $eventorga['organisateur'].'</br>';
}
?>

目前,我的代码返回这个结果:

Holyblood
Nessy
Pokégaia
Sorrow
JOHN
Holyblood

(来自我的 MYSQL 数据库)

我希望回报是这样的:

Holyblood - 2
Nessy - 1
Pokégaia - 1
Sorrow - 1
JOHN - 1

【问题讨论】:

    标签: php arrays count duplicates row


    【解决方案1】:
    $eventResposne = array();
    
        array_walk($eventorga,function($responses,$index) use( &$eventResposne){
                  if(isset($eventResposne[$responses['organisateur']])){
                           $eventResposne[$responses['organisateur']] = $eventResposne[$responses['organisateur']] + 1;
                  }else{
                        $eventResposne[$responses['organisateur']] = 1;
    
                  }       
        });
    

    它将返回一个类似 {'Holyblood':2,'Nessy':1,...} 的数组。 现在使用 $eventResposne 数组打印所需的模式。

    【讨论】:

    • 感谢您的回答!但是错误“警告:array_walk() 期望参数 1 是数组”返回给我。有关信息,我通过sql = "SELECT id, title, description, organiser, orgaavailable, donator, start, end, color FROM events"; $req = $bdd-&gt;prepare($sql); $req-&gt;execute(); $events = $req-&gt;fetchAll(); 从数据库中恢复我的数据
    • 在你的问题中已经提到你有一个数组变量 $eventorga 所以我使用了相同的数组变量。你的数组必须像 $eventorga = [['organisateur'=>'Holyblood'],['organisateur'=>'Nessy'],...]
    【解决方案2】:

    试试这个。

    $events =  [
                "Holyblood",
                "Nessy",
                "Pokégaia",
                "Sorrow",
                "JOHN",
                "Holyblood"
            ];
    $eventCounts = [];
    foreach ($events as $key => $eventorga) {
        if(!isset($eventCounts[$eventorga]))
            $eventCounts[$eventorga] = 0;
        $eventCounts[$eventorga]++   ;     
    
    }
    foreach ($eventCounts as $eventName => $eventCount) {
        echo $eventName . ' - ' . $eventCount . '<br>';
    }
    

    【讨论】:

    • 谢谢,它适用于固定数据!您知道我如何通过直接集成数据库中的数据来自动执行此操作吗?此数据通过sql = "SELECT id, title, description, organiser, orgaavailable, donator, start, end, color FROM events"; $req = $bdd-&gt;prepare($sql); $req-&gt;execute(); $events = $req-&gt;fetchAll(); 恢复
    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2010-12-25
    相关资源
    最近更新 更多