我在這所訪問的網站存儲在表(千)顯示5分最reccurent的話,我需要顯示前5個最常用的網站:PHP如何在一個列表
$websites= "site#1.com site#2.com site#1.com site#1.com site#3.com ... "
我在這所訪問的網站存儲在表(千)顯示5分最reccurent的話,我需要顯示前5個最常用的網站:PHP如何在一個列表
$websites= "site#1.com site#2.com site#1.com site#1.com site#3.com ... "
這是故意冗長,所以你明白這是怎麼回事:
<?php
$websites = "site#1.com site#2.com site#1.com site#1.com site#3.com";
//presuming they'll always be seperated by a single space...
$sites = explode(' ', $websites);
$siteCount = array();
foreach ($sites as $site) {
if (!isset($siteCount[$site])) {
$siteCount[$site] = 1;
} else {
$siteCount[$site]++;
}
}
arsort($siteCount);
$finalArray = array_slice($siteCount, 0, 5);
var_dump($siteCount);
,輸出:
array(3) {
["site#1.com"]=>
int(3)
["site#3.com"]=>
int(1)
["site#2.com"]=>
int(1)
}
是的,它有效,所以有辦法操縱結果,以便我可以顯示百分比,儘管int(x),知道我已經有訪問的網站總數'$ total' – Falcon 2013-05-14 13:18:07
是的。將值加起來得到總數,然後除以100。 – LeonardChallis 2013-05-14 13:21:47
是的我知道,但你怎麼做的數組?如果它是一個簡單的變量,它會更容易 – Falcon 2013-05-14 13:39:44
這是一個字符串,所以你必須把它轉換成一個數組:
$websites_array = explode(" ", $websites);
那麼你可以得到要素頻率與
$frequencies=array_count_values($websites_array)
$most_frequent_websites=array_keys($frequencies, max($frequencies))
array_count_values
返回頻率圖,array_keys
找到與最大值關聯的密鑰(網站)。
請注意,如果您有多個網站的計數最高,它將返回一個最常見的網站數組。
最簡單的辦法:
$websites= "site#1.com site#2.com site#1.com site#1.com site#3.com site#2.com";
$sites = explode(' ', $websites);
foreach($sites as $site)
$visits[$site]++;
// Sort by descending number of visits
arsort($visits);
var_dump($visits);
但我怎麼可以而不是顯示int(x)顯示一個百分比,知道我已經有總數? – Falcon 2013-05-14 14:50:38
試試這個
$sites = explode(' ',$site_string);
$top5 = array_count_values($array);
rsort($top5);
$top5 = array_slice($top5, 0, 5);
我們可以做到這一點的方法:
$websites_array = explode(' ', $websites);
$top_websites = array_count_values($websites_array);
asort($top_websites);
// $top_websites = array('#site2' => 5, '#site4' => 4, '#site1' => 2, ...)
列表從哪裏來的?數據應該有更多可用的來源。如果不是,額外的工作(儘管不是很多)將是必需的。 – MatthewMcGovern 2013-05-14 12:49:28
你已經試過了什麼?這個網站是爲了幫助你理解,而不是爲你做 – LeonardChallis 2013-05-14 12:49:33
我嘗試了很多東西,但沒有像使用兩個循環一樣工作 – Falcon 2013-05-14 12:53:36