記錄一下一個問題的解決,裡面涉及幾個函數的用法,當作復習啦。
先說明一下問題。數據表裡面的字段 content 存儲了一個以逗號分割的字符串,最大有20個數,最大數字為40。比如3,24,33,40類似字樣的數字序列。其實就是一個保存了多項投票結果的字段啦。現在需要統計每個數字的個數,也就是每個投票項有多少人投了,並排序。
我的思路是這樣的。
1. 首先從數據庫的congtent字段讀取數據,並把它們合並成一個字符串。
<?php while($myrow = $connector -> fetch_array($result)) { //$r[] = explode(",", $myrow["content"]); $str .= $myrow["content"].','; } $arr_str = substr($str, 0, -1); ?>
由於最後一個數後面有逗號,所以要對字符串進行截取。
2. 將字符串按逗號分割成數組。
$r = explode(",", $arr_str);
3. 用 array_count_values() 統計一維數組的元素個數
由於array_count_values()貌似不能直接對二維數組的元素進行個數統計,所以進行了上面的兩個步驟,得到一個一維數組。
array_count_values() 函數用於統計數組中所有值出現的次數。返回一個數組,其元素的鍵名是原數組的值,鍵值是該值在原數組中出現的次數。
$rs = array_count_values($r);
4. 排序
排序很簡單了,但要保持鍵值,可以使用自帶的asort()函數。
asort($rs); echo '<pre>'; print_r($rs); echo '</pre>';
記錄一下幾個用到的函數。