Có thể bạn chưa biết (PHP)

Bài blog này dùng để giới thiệu/chia sẻ một số thủ thuật/ câu lệnh php mà có thể mọi người không để ý hoặc không biết nó tồn tại 😀

1, goto (PHP >= 5.3).

Nếu đã từng lập trình với ngôn ngữ basic hoặc ngôn ngữ tầng thấp hơn như assembly hẳn sẽ biết đến câu lệnh này :), tuy nhiên php trước đây lại không được hỗ trợ. Ở phiên phản cập nhật 5.2 lên 5.3 thì hàm này cuối cùng cũng được thêm vào php, nó chủ yếu được sử dụng để ngắt vòng lặp hoặc tránh trường hợp phải if cả 1 đoạn code dài. Câu lệnh goto được sử dụng như trong ví dụ sau :

cách thông thường :

if ($somethingIsTrue) {

//do lots of stuff here;

}

// continue here;

 

với goto :

if (!$somethingIsTrue) goto cont;

//do lots of stuff here

cont : //continue here;

 

việc này sẽ giúp việc phải if hoặc else với 1 lượng code lớn, nhìn rất mất thẩm mỹ :D, tuy nhiên, với những người không quen, nó sẽ trở nên 1 đoạn code rất khó đọc ^^~ vì vậy trước khi dùng, mọi người hãy cân nhắc thật kỹ 😀

 

2, boolval () (PHP >= 5.5);

Hẳn mọi người ai cũng đã quen thuộc với hàm empty() của PHP để check xem một biến có phải là array rỗng không, có phải null không, có giá trị > 0 hay không, là string rỗng hay có ký tự, true or false. và dùng !empty() để check một biến không nằm vào các trường hợp trên, tuy nhiên việc phải thêm dấu ! vào trước một hàm luôn làm người đọc khó nhìn, nếu không chú ý có thể bị hiểu nhầm flow của code. ở phiên bản PHP 5.5 thì php đã thêm vào hàm boolval(), hàm này sẽ có giá trị trả về ngược với hàm empty()

boolval ($a) = !empty($a);

 

3, array_column() (PHP 5.5);

Cú pháp:

array array_column ( array $array , mixed $column_key [,mixed $index_key = null] )

Các hàm làm việc với array của php từ trước đến nay vốn rất tuyệt vời, và ở phiên bản PHP 5.5, php đã làm cho nó tuyệt vời hơn với array_column, hàm này giúp bạn thực hiện việc lấy các giá trị của một mảng dạng như “SELECT some_column FROM database” sql. ví dụ sau đây sẽ giúp mọi người hiểu rõ hơn về hàm này :

 

// Array representing a possible record set returned from a database
$records = array(
       array(
            'id' = 2135,
            'first_name' = 'John',
            'last_name' = 'Doe',
       ),
       array(
            'id' = 3245,
            'first_name' = 'Sally',
            'last_name' = 'Smith',
       ),
       array(
            'id' = 5342,
            'first_name' = 'Jane',
            'last_name' = 'Jones',
       ),
       array(
            'id' = 5623,
            'first_name' = 'Peter',
            'last_name' = 'Doe',
       )
   );
// vì blog không cho phép gõ ký tự 'greater' nên đành phải dùng mỗi dấu = ạ..
$first_names = array_column($records, 'first_name');
print_r($first_names);

$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);

//ví dụ được lấy từ http://www.php.net/manual/en/function.array-column.php

kết quả sẽ là :

//không có index key

Array
(
    [0] = John
    [1] = Sally
    [2] = Jane
    [3] = Peter
)

//có index key là id

Array
(
    [2135] = Doe
    [3245] = Smith
    [5342] = Jones
    [5623] = Doe
)

4, array_filter()

array array_filter ( array $array = array() [, callable $callback = Function() ] )

là một hàm về function nữa của php khá hay, dùng để lọc ra những phần tử trong mảng phù hợp với một điều kiện nhất định. ví dụ như ta muốn lấy tất cả các phần tử chia hết cho 5 ở trong một mảng, thay vì for toàn bộ bảng, lấy ra những phần thử chia hết cho 5 thì có thể dùng array_filter với đoạn code đơn giản như sau:

$b = [3,25,10,5,4,1,44,20,23,65];
function multipleOfFive($a) {
    return ($a % 5 === 0);
}
$c = array_filter($b,multipleOfFive);
print_r($c);

$c = Array (
      1 = 25
      2 = 10
      3 = 5
      7 = 20
      9 = 65
)

Nếu không có callback function, array_filter sẽ loại bỏ các phần tử bị tính là empty (0,”,null,false,[]…)

ví dụ :

$b = [0,1,3,false,7,null,'',"test",array(2),array()];
$c = array_filter($b);

$c = array (
   1 = 1,
   2 = 3,
   4 = 7,
   7 = "test",
   8 = array (2)
);

5. Hệ cơ số 8 dạng rút gọn.
Hôm nọ vô tình mình bị đố 1 câu khá kỳ lạ, câu đố đấy như sau:
cho đoạn code:

$a = 012;
$b = $a/4;
echo $b;

theo mọi người đoạn code trên sẽ in ra bao nhiêu?
hẳn ai cũng sẽ nghĩ ngay đến số 3, nhưng nếu là 3 thật thì chả ai đố làm gì đúng không ạ? mọi người có thể test thử và kết quả đương nhiên không phải là 3 rồi. Ở trường hợp này kết quả sẽ là 2.5
khi khai báo $a = 012; đồng nghĩa với việc gán biến a với giá trị 12 ở hệ cơ số 8 tương đương với 10 ở hệ cơ số 10. cho nên ta sẽ thu được $a/4 = 2.5.
thực ra trong khi làm việc rất ít ai dùng hệ cơ số 8, tuy nhiên, đôi khi mọi người sẽ bị đố những câu tương tự, và mình trả lời được, thì không phải bá lắm sao 😀 😀

Tổng kết
Trên đây chỉ là 1 số rất ít những điều thú vị về PHP, hi vọng mọi người có thể chia sẻ thêm nhiều, nhiều nữa để cùng nhau học hỏi và biết thêm nhiều điều về ngôn ngữ này 😀

Tags:,

Add a Comment

Scroll Up