php代碼里用explore(',',
創(chuàng)新互聯(lián)成立于2013年,先為屯昌等服務(wù)建站,屯昌等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為屯昌企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
$son),分割成數(shù)組,可以統(tǒng)計,也方便使用各個值,
如果你只是想要個數(shù),可以用substr_count($son,
',')+1,逗號出現(xiàn)的次數(shù)加一就是值的個數(shù)
使用array_count_values函數(shù)可以找出數(shù)組中相同值出現(xiàn)的次數(shù),array_count_values用法如下:
array_count_values — 統(tǒng)計數(shù)組中所有的值出現(xiàn)的次數(shù)
array array_count_values ( array $input)
array_count_values() 返回一個數(shù)組,該數(shù)組用 input 數(shù)組中的值作為鍵名,該值在:input 數(shù)組中出現(xiàn)的次數(shù)作為值
input:統(tǒng)計這個數(shù)組的值
返回值:
返回一個關(guān)聯(lián)數(shù)組,用 input數(shù)組中的值作為鍵名,該值在數(shù)組中出現(xiàn)的次數(shù)作為值。
示例:
1
2
3
4
?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?
以上例程會輸出:
1
2
3
4
5
6
Array
(
[1] = 2
[hello] = 2
[world] = 1
)
需要取出哪個值的次數(shù),就在返回的數(shù)組中獲取對應(yīng)的key值即可,例如示例中array_count_values($array)['hello']就可以取出數(shù)組中hello的個數(shù)。
簡單的循環(huán)即可,選出重復(fù)(出現(xiàn)次數(shù)大于等于2)的元素并統(tǒng)計每個重復(fù)元素出現(xiàn)的次數(shù):
php中的 array_count_values() 函數(shù)可以實現(xiàn)
array_count_values() 函數(shù)用于統(tǒng)計數(shù)組中所有值出現(xiàn)的次數(shù)。
本函數(shù)返回一個數(shù)組,其元素的鍵名是原數(shù)組的值,鍵值是該值在原數(shù)組中出現(xiàn)的次數(shù)。
array_count_values(array)
例如:
?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?
輸出:
Array ( [Cat] = 1 [Dog] = 2 [Horse] = 1 )
擴展資料:
php統(tǒng)計數(shù)組元素個數(shù)
count():對數(shù)組中的元素個數(shù)進行統(tǒng)計;
sizeof():和count()具有同樣的用途,這兩個函數(shù)都可以返回數(shù)組元素個數(shù),得到一個常規(guī)標量變量中的元素個數(shù)。
如果傳遞給這個函數(shù)的數(shù)組是一個空數(shù)組,或者是一個沒有經(jīng)過設(shè)定的變量,返回的數(shù)組元素個數(shù)就是0;
array_count_value():統(tǒng)計每個特定的值在數(shù)組$array中出現(xiàn)過的次數(shù);
如:
$array=array(4,5,1,2,3,1,2,1);
$ac=array_count_value($array);
將創(chuàng)建一個名為$ac數(shù)組,該數(shù)組包括:? ? ? ? ? ? ? ? ?
關(guān)鍵字 ????? 值
4????????? 1
5????????? 1
1????????? 3
2????????? 2
3????????? 1
其實我感覺你這個邏輯沒問題,代碼有點問題,我是這么認為的,代碼應(yīng)該是這樣
$idzhi = rand(0,表中數(shù)據(jù)條數(shù));
$data = $data['id']; // 我不明白你這里是什么意思
$arr = $m-where($data = $idzhi)-limit(8) -select();
不過我總感覺上面的有問題
$idzhi = rand(0,表中數(shù)據(jù)條數(shù));
$arr = $m-where("id = $idzhi")-limit(8) -select();
不對的話就試試這個,我個人覺得這樣是對的,不明白你那個$data['id'];是干嘛用的
如果你要達到你說的這種效果,需要對數(shù)據(jù)庫表進行重新設(shè)計,你現(xiàn)在這種設(shè)計不合理!
如果無法改變數(shù)據(jù)表的話,就需要PHP來進行處理,這需要把數(shù)據(jù)表里的所有行全取出來,然后根據(jù)切開的單個值組成數(shù)組,統(tǒng)計數(shù)組里值的個數(shù),再排名。
下面簡單的寫一下代碼,未經(jīng)測試,主要看解決思路
$rank = $_pie = array();
$result = mysql_query(‘‘SELECT * FROM table’’); // table為你實際數(shù)據(jù)表名稱
while ($row = mysql_fetch_assoc($result))
{
if (!empty($row['code']))
{
$_pie = explode(',', $row['code']);
foreach ($_pie as $_v) {
$rank[$_v]++; // 統(tǒng)計加1
}
}
}
if (!empty($rank))
{
rsort($rank); // 排序
$index = 0;
foreach ($rank as $key = $val) {
$index++;
echo $index . "\t" . $key . "\t" . $val . "\n"; // 輸出樣式
}
}
以上php方式應(yīng)該可以達到你想要的結(jié)果,但不能做為實際生產(chǎn)解決方式,因為如果數(shù)據(jù)表里的數(shù)據(jù)多的話,這樣做是非常不理想的,所以建議重新設(shè)計數(shù)據(jù)表!!
如你描述,跟網(wǎng)站中熱門標簽所需效果差不多,可以參考一些開源程序中熱門標簽的解決方案??!