ตัวอย่างโค้ด :
1 2 3 4 | < ?php $array = array("hi", "hi", "dog"); print_r(array_count_values($array)); ?> |
ผลลัพธ์ :
Array ( [hi] => 2 [dog] => 1 ) |
ฟังก์ชั่น array_count_values นี้ใช้สำหรับนับค่าที่เหมือนกันใน Array ว่าเหมือนกันกี่จำนวน เช่นในตัวอย่างที่ผมแสดงไว้ ผลลัพธ์ที่ได้ hi ซ้ำกัน 2 ครั้ง ส่วน dog ปรากฎใน Array แค่ 1 ครั้ง เมื่อสังเกตุแล้วจะเห็นว่า ฟังก์ชั่นนี้ คืนค่ากลับมาเป็น Array และนำเอา value ใน Array ที่เป็นพารามิเตอร์ มาเป็น key ใน Array ที่เป็น output และ จำนวนที่นับได้ เป็น value ของ key นั้นๆ
ลองดูอีกสักตัวอย่าง :
1 2 3 4 | <?php $array = array( 1 , "cat", "fish", "dog" , "cow" , 1 ,"cow" ); print_r(array_count_values($array)); ?> |
ผลลัพธ์ :
Array ( [1] => 2 [cat] => 1 [fish] => 1 [dog] => 1 [cow] => 2 ) |
แถมในกรณีที่ต้องการนับ array 2 มิติ เนื่องจากฟังก์ชั่น array_count_values จะนับได้เฉพาะ array 1 มิติ เท่านั้น เราก็เลยต้องลงมือเขียนโค้ดเพิ่มเติมเองนิดหน่อย โดยการรวมอะเรย์ทั้งหมดเข้าด้วยกัน แล้วแตกอะเรย์ออกมาใหม่ ให้เป็นอะเรย์ 1 มิติ ดูโค้ดครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $value = array ( array ( 1 => 0, 2 => '2009-06-09,10', 3 => '2009-06-09,11' ), array ( 1 => 0, 2 => '2009-06-09,10', 3 => '2009-06-09,11' ), array ( 1 => 0, 2 => '2009-06-09,11', ), array ( 1 => 0, 2 => '2009-06-09,10', 3 => '2009-06-09,11' ) ); //+ ทำให้เป็น array 1 มิติเสียก่อน foreach( $value as $value ): $im_value[] = implode('|',$value ); endforeach; $string = implode('|',$im_value); $odi_array = explode('|',$string); //- ทำให้เป็น array 1 มิติเสียก่อน print_r( array_count_values($odi_array) ) ?> |
ผลลัพธ์
Array ( [0] => 4 [2009-06-09,10] => 3 [2009-06-09,11] => 4 ) |
แหล่งข้อมูลเพิ่มเติม http://th2.php.net/manual/en/function.array-count-values.php :
Leave a Reply