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