Một vài điều bạn chưa biết về PHP

1. Lệnh goto (PHP >= 5.3). Nếu bạn đã 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ử ...

1. Lệnh goto (PHP >= 5.3). 

Nếu bạn đã 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 lệnh goto.

if (!$somethingIsTrue) {
    goto cont;
}
//do lots of stuff here
cont : //continue here;

Ví dụ:

<?php 
	$a = 1;
	if($a==1){
		goto b;
	}else if($a==2){
		goto c;
	}
	echo 'Học lập trình tại www.chiasephp.net';
	die();
	b:
	echo 'Học lập trình PHP tại www.chiasephp.net';
	die();
	c:
	echo 'Học lập trình MYSQL tại www.chiasephp.net';
	die();
?>

Kết quả:

Học lập trình PHP tại www.chiasephp.net

Việc này sẽ giúp việc phải if hoặc else với một lượng code lớn, nhìn mất thẩm mỹ :D, tuy nhiên, với những người không quen, nó sẽ trở thành một đ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 :

<?php 
	$samples = 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'
		)
	);
	$f_names = array_column($samples, 'first_name');
	print_r('<pre>');
	print_r($f_names);
	
	$l_names = array_column($samples, 'last_name', 'id');
	print_r($l_names);
?>

Kết quả sẽ là:

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

Và có index key.

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

4. Hàm array_filter()

Cú pháp:

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:

Viết thông thường.

<?php 
	$a = array(3,25,10,5,4,1,44,20,23,65);
	$b = array();
	// Loop
	for($i=0; $i<count($a); $i++){
		if($a[$i]%5===0){
			$b[] = $a[$i];
		}
	}
	print_r('<pre>');
	print_r($b);
?>

Kết quả:

Array
(
    [0] => 25
    [1] => 10
    [2] => 5
    [3] => 20
    [4] => 65
)

Sử dụng array_filter.

<?php 
	$a = array(3,25,10,5,4,1,44,20,23,65);
	function callback($a) {
		return ($a % 5 === 0);
	}
	$b = array_filter($a, callback);
	print_r('<pre>');
	print_r($b);
?>

Kết quả:

Array
(
    [1] => 25
    [2] => 10
    [3] => 5
    [7] => 20
    [9] => 65
)

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

<?php 
	$a = array(3,null,10,'test',4,0,44,20,23,65);
	$b = array_filter($a);
	print_r('<pre>');
	print_r($b);
?>

Kết quả:

Array
(
    [0] => 3
    [2] => 10
    [3] => test
    [4] => 4
    [6] => 44
    [7] => 20
    [8] => 23
    [9] => 65
)

5. Kết luận.

Trên đây chỉ là một vài chia sẻ trng quá trình mình làm việc và học hỏi đúc rút ra được. Mong rằng bài viết sẽ hữu ích với các bạn.

Bài liên quan

Điều có thể bạn chưa biết về dấu phẩy "," trong javascript

Dấu , thực ra cũng là 1 toán tử Khi sử dụng như 1 toán tử, dấu "," sẽ tính toán cả 2 toán hạng của nó (từ trái qua phải) rồi trả về kết quả giá trị của toán hạng thứ 2. Ví dụ: var a = ( 7 , 5 ) ; a ; //5 var x , y , z x = ( y = 1 , z = 4 ) ; x ; //4 y ...

Vũ Văn Thanh viết 07:11 ngày 03/10/2018

Một vài điều bạn chưa biết về PHP

1. Lệnh goto (PHP >= 5.3). Nếu bạn đã 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ử ...

Vũ Văn Thanh viết 16:34 ngày 01/10/2018

Những Điều Bạn Chưa Biết Về So Sánh Chuỗi Trong Ruby

Chuỗi là kiểu dữ liệu được sử dụng rất phổ biến trong lập trình. Bài viết này sẽ tổng hợp những cách so sánh chuỗi trong Ruby. Mỗi cách sẽ kèm theo các ví dụ minh hoạ và được chạy sử dụng chương trình interactive ruby hay irb. So Sánh Sử Dụng Toán Tử == Toán tử == so sánh sự giống nhau ...

Vũ Văn Thanh viết 11:11 ngày 07/09/2018

5 điều bạn chưa biết về Java 10

Local-variable type inference đang là một trong những chủ đề đang gây tranh cãi hiện nay, nhưng Java 10 sẽ mang đến những thay đổi đáng trông đợi đến garbage collection và container awareness trong JVM. Các Java developer đã quen với việc chờ đợi mỏi mòn các release mới của Java, nhưng release ...

Bùi Văn Nam viết 17:46 ngày 12/08/2018

10 điều có thể bạn chưa biết về Service trong Android

Service - một trong những thành phần ứng dụng của Android, bị nhiều người hiểu sai từ bản chất cho đến cách sử dụng. 10 điều quan trọng về service dưới đây sẽ giúp bạn hiểu rõ hơn về service. Bài đăng này không nói đến chi tiết về cách hoạt động của service, thay vào đó nó là một cái nhìn tổng ...

Trịnh Tiến Mạnh viết 17:19 ngày 12/08/2018
0