1/ Hàm truyền tham số tự do. 2/ Hàm tìm file glob() 3/ Chuyển mảng thành chuỗi và chuỗi thành mảng ------------------------------ 1/ Hàm truyền tham số tự do. PHP Code: // Tham số để rỗng nhé function foo() { // returns an array of all passed arguments $args = func_get_args(); foreach ($args as $k => $v) { echo "arg".($k+1).": $v\n"; } } foo(); /* Không xuất gì cả */ foo('hello'); /* Xuất arg1: hello */ foo('hello', 'world', 'again'); /* Xuất arg1: hello arg2: world arg3: again */ 2/ Hàm tìm file glob() Nhiều hàm trong PHP có tên dài và có tính mô tả chức năng của nó . Tuy nhiên, thật khó để nói hàm glob() có nhiệm vụ gì nếu chúng ta chưa từng sử dụng qua . Thật ra, glob() có chức năng như hàm scandir() nhưng là 1 phiên bản cao cấp hơn ~~ PHP Code: // Lấy hết tất cả các file đuôi .php $files = glob('*.php'); print_r($files); /* Xuất Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php ) */ Bên cạnh đó, chúng ta có thể lấy ra nhiều file : PHP Code: // Lấy tất cả file có đuôi .php và .txt //GLOB_BRACE : ở trong {} sẽ dc hiểu là hoặc << hoặc php hoặc txt thì lấy ra $files = glob('*.{php,txt}', GLOB_BRACE); print_r($files); /* Xuất Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php [4] => log.txt [5] => test.txt ) */ File cũng có thể được lấy ra với đường dẫn : PHP Code: $files = glob('../images/a*.jpg'); print_r($files); /* Xuất Array ( [0] => ../images/apple.jpg [1] => ../images/art.jpg ) */ Còn nếu bạn muốn lấy đường dẫn đầy đủ, chỉ cần dùng realpath() : PHP Code: $files = glob('../images/a*.jpg'); // sử dụng hàm đến mỗi phần tử mảng $files = array_map('realpath',$files); print_r($files); /* output looks like: Array ( [0] => C:\wamp\www\images\apple.jpg [1] => C:\wamp\www\images\art.jpg ) */ 3/ Chuyển mảng thành chuỗi và chuỗi thành mảng Bạn đã bao giờ lưu 1 biến phức tạp vào database hay file ? Bạn không cần phải có những giải pháp của mình để chuyển đổi mảng về dạng chuỗi rồi nạp vào, bởi vì PHP đã có vào hàm dùng với mục đích này ! Chúng ta sẽ tìm hiểu 2 hàm : serialize() và unserialize() PHP Code: // 1 mảng phức tạp $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // convert to a string $string = serialize($myvar); echo $string; /* Xuất a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";} */ // Bạn có thể lấy lại mảng ban đầu $newvar = unserialize($string); print_r($newvar); /* Xuất Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple ) */ Tuy nhiên, từ khi JSON trở nên phổ biến, họ đã quyết định thêm sự hỗ trợ vào PHP5.2 . Bây giờ bạn có thể sử dụng json_encode() và json_decode() : PHP Code: // Mảng phức tạp $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // Chuyển đổi mảng thành string $string = json_encode($myvar); echo $string; /* Xuất ["hello",42,[1,"two"],"apple"] */ // Lấy lại mảng ban đầu $newvar = json_decode($string); print_r($newvar); /* Xuất Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple ) */ Có vẻ 2 hàm này nhỏ gọn hơn nhỉ ^^ . Hơn thế nữa, chúng tương thích với javascript 4/ Tạo ID đặc biệt Có 1 vài trường hợp chúng ta cần phải tạo ra những chuỗi đặc biệt ( không trùng lặp ), người ta thường dùng md5() để làm điều này, nhưng md5() không thực sự sinh ra để làm điều đó ! PHP Code: // generate unique string echo md5(time() . mt_rand(1,1000000)); Có 1 hàm chuyên dùng để xử lý điều đó trong PHP tên là : uniqid() PHP Code: // Tạo chuỗi đặc biệt echo uniqid(); /* Xuất 4bd67c947233e */ // Tạo 1 chuỗi đặc biệt khác echo uniqid(); /* Xuất 4bd67c9472340 */ Có thể bạn đang thắc mắc rằng dù hàm tạo chuỗi đặc biệt nhưng có 1 số kí tự đâu tiên giống hệt nhau mỗi khi chạy ! Bởi vì việc tạo chuỗi này phụ thuộc vào thời gian server . Để giảm cơ hội chúng có thể y chang nhau, chúng ta thêm prefix vào : PHP Code: // với prefix echo uniqid('foo_'); /* Xuất foo_4bd67d6cd8b8f */ // với nhiều kí tự hơn echo uniqid('',true); /* Xuất 4bd67d6cd8b926.12135106 */ // prefix và nhiều kí tự hơn echo uniqid('bar_',true); /* Xuất bar_4bd67da367b650.43684647 */ Hàm này sẽ tạo chuỗi với số kí tự ít hơn md5(), sẽ giúp bạn tiết kiệm thời gian hơn .