Hướng dẫn dùng alphabet sort trong PHP
Chào các bạn! Show Hôm nay tôi sẽ viết một tutorial về PHP. Chuyện là hôm trước đi thi, trong lúc chờ đợi, nhìn lên danh sách thí sinh dự thi. Tôi chợt nghĩ sao mình không thử viết một chương trình sắp xếp danh sách theo thứ tự alphabet (A-Z). Sau khi về nhà, ngồi vào máy và search Google, sau 30 phút cuối cùng cũng xong. Phù! Bây giờ tôi rất vui được chia sẻ với các bạn chương trình tôi viết. 🙂 Quay lại vấn đề chính, giả sử tôi có một danh sách các sinh viên cần được sắp xếp theo thứ tự A-Z và tất cả tên sinh viên đều được lưu vào một mảng. Một mảng thường có cấu trúc như sau : Array ( key => value ) Do đó việc sắp xếp các phần tử mảng được chia thành 3 loại . Đó là
Dưới đây là các bài viết, hướng dẫn rất hay về sắp xếp (sort) trong PHP mà các bạn nên tham khảo thêm http://www.php.net/manual/en/array.sorting.php http://www.techrepublic.com/blog/programming-and-development/use-the-power-of-these-php-functions-to-sort-your-arrays/394 http://www.the-art-of-web.com/php/sortarray/ Sau khi đọc các bài viết trên, tôi hi vọng các bạn nắm được cơ bản cách sử dụng và công dụng của các hàm sắp xếp. Thuật toán tôi sử dụng (chích xác là mẹo) cũng khá đơn giản. Trong các hàm đã đọc thì tôi chú ý đến hàm ksort() với chức năng sắp xếp các phần tử mảng theo key (chỉ số) . Mọi chuyện đơn giản hơn khi tôi thay key của mảng cũ bằng tên của mỗi sinh viên vì người Việt Nam chúng ta sắp xếp danh sách theo tên mà 🙂 . Đọc đoạn code dưới đây các bạn sẽ hiểu hơn : 'Huynh Van Nhan', 1 => 'Nguyen Xuan Thach', 2 => 'Le Tran Lam', 3 => 'Tran Sy Quy', 4 => 'Van Viet Vuong', 5 => 'Do Thi Phuong Thao' ); // Thay đổi key của mảng ban dầu (0,1,..,5) thành tên của mỗi sinh viên để dễ sắp xếp foreach ($students as $key => $val) { $students[end(explode(" ", $val))] = $students[$key]; unset($students[$key]); } // In kết quả echo " Và kết quả nhận được Tên các sinh viên sau khi sắp xếp theo Alphabet (A - Z) Le Tran Lam Huynh Van Nhan Tran Sy Quy Nguyen Xuan Thach Do Thi Phuong Thao Van Viet Vuong Trong đó : + Hàm explode() sẽ tách 1 chuỗi (string) đưa vào một mảng + Hàm end() sẽ lấy phần tử cuối cùng của mảng , trong trường hợp này nó sẽ lấy tên của mỗi sinh viên. Tổng kết,Đây chỉ là một chương trình nhỏ, nhưng biết đâu một ý tưởng lớn lại bắt đầu từ những điều giản đơn như thế này thì sao ? Hi vọng bài viết này hữu ích với các bạn . Thân ái ! ^^ Hàm Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Cú PhápCú Pháp: Trong đó:
Vậy có các kiểu sắp xếp nào? Bài viết này được đăng tại [free tuts .net]
Hàm sẽ trả về TRUE nếu sắp xếp thành công và FALSE nếu thất bại. Ví dụCode $subject = array( "php", "java", "js", "html" ); sort($subject); foreach ($subject as $key => $val) { echo "subject[" . $key . "] = " . $val . " Kết quả subject[0] = html subject[1] = java subject[2] = js subject[3] = php Code $subject = array( 1, 43, 55, 24 ); sort($subject, SORT_NUMERIC); foreach ($subject as $key => $val) { echo "subject[" . $key . "] = " . $val . " Kết quả subject[0] = 1 subject[1] = 24 subject[2] = 43 subject[3] = 55 Code $subject = array( 'laravel', 'Zend', 'cI' ); sort($subject, SORT_NATURAL); foreach ($subject as $key => $val) { echo "subject[" . $key . "] = " . $val . " Kết quả subject[0] = Zend subject[1] = cI subject[2] = laravel Ta có thể thấy tuy rằng z đúng sau c nhưng Zend vẫn được xếp trên cI do Z được viết hoa.Để sắp xếp không phân biệt chữ hoa chữ thường ta nên dùng kết hợp với SORT_FLAG_CASE. Code $subject = array( 'laravel', 'Zend', 'cI' ); sort($subject, SORT_NATURAL | SORT_FLAG_CASE); foreach ($subject as $key => $val) { echo "subject[" . $key . "] = " . $val . " Kết quả subject[0] = cI subject[1] = laravel subject[2] = Zend chữ Zend đã về đúng vị trí của nó :D Tham khảo : php.net |