Mệnh đề WHERE | MySQL & PHP

Bạn sẽ được hướng dẫn tìm hiểu mệnh đề WHERE để chọn các bản ghi từ bảng cơ sở dữ liệu MySQL dựa trên các điều kiện cụ thể bằng PHP.

Trong bài hướng dẫn tự học PHP và MySQL này, bạn sẽ được hướng dẫn tìm hiểu mệnh đề WHERE để chọn các bản ghi từ bảng cơ sở dữ liệu MySQL dựa trên các điều kiện cụ thể bằng PHP.

Lọc bản ghi với mệnh đề WHERE

Mệnh đề WHERE có nghĩa là

WHERE được sử dụng để trích xuất những bản ghi đáp ứng một điều kiện cụ thể.

Mệnh đề WHERE trong MySQL và PHP
Mệnh đề WHERE trong MySQL và PHP

Cú pháp cơ bản của mệnh đề WHERE như sau:

SELECT column_name(s) FROM table_name WHERE column_name operator value

Bây giờ,

Chúng ta hãy tạo một truy vấn SQL bằng cách sử dụng mệnh đề WHERE trong câu lệnh SELECT, sau đó chúng ta sẽ thực hiện truy vấn này thông qua việc chuyển nó đến hàm mysqli_query() của PHP để lấy dữ liệu được lọc.

Chúng ta có một bảng person bên trong cơ sở dữ liệu demo có các bản ghi sau:

Bảng person trong CSDL demo

Mã PHP sau đây chọn tất cả các hàng từ bảng person trong đó first_name = ‘Triệu Tòn’:

1. Hướng dẫn sử dụng Mệnh đề WHERE với MySQLi hướng thủ tục

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($link === false){
    die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
 
// Cố gắng thực hiện truy vấn
$sql = "SELECT * FROM persons WHERE first_name='Triệu Tòn'";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        mysqli_free_result($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi $sql. " . mysqli_error($link);
}
 
// Đóng kết nối
mysqli_close($link);
?>

2. Hướng dẫn sử dụng Mệnh đề WHERE với MySQLi hướng đối tượng

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($mysqli === false){
    die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
 
// Cố gắng thực thi truy vấn
$sql = "SELECT * FROM persons WHERE first_name='Triệu Tòn'";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        $result->free();
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi $sql. " . $mysqli->error;
}
 
// Đóng kết nối
$mysqli->close();
?>

3. Hướng dẫn sử dụng Mệnh đề WHERE với PDO

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Thiết lập chế độ PDO error thành Ngoại lệ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Không thể kết nối. " . $e->getMessage());
}
 
// Cố gắng thực thi truy vấn
try{
    $sql = "SELECT * FROM persons WHERE first_name='Triệu Tòn'";  
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        unset($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} catch(PDOException $e){
    die("ERROR: Không thể thực thi $sql. " . $e->getMessage());
}
 
// Đóng kết nối
unset($pdo);
?>

Sau khi sử dụng mệnh đề WHERE để lọc bản ghi với fisrt_name = ‘Triệu Tòn’, chúng ta nhận được kết quả như sau:

Bạn đã hiểu cách sử dụng mệnh đề WHERE chưa?

Mệnh đề WHERE trong MySQL được sử dụng để lọc bản ghi theo một điều kiện nào đó. Sau đó chúng ta có thể sử dụng kết quả lọc như thế nào tùy thích.

Trên đây bạn đã được hướng dẫn sử dụng mệnh đề WHERE để lọc bản ghi với 3 cách. Nếu có bất kỳ điều gì chưa hiểu, vui lòng để lại comment bạn nhé.!

PHPDev

Bài 29: Hướng dẫn các Làm sạch và Xác thực dữ liệu phổ biến với PHP Filters

Trong bài hướng dẫn tự học lập trình PHP này, bạn sẽ được hướng dẫn về cách làm sạch và xác thực dữ liệu đầu vào của người dùng với PHP Filters

Trong bài hướng dẫn tự học lập trình PHP này, bạn sẽ được hướng dẫn về cách làm sạchxác thực dữ liệu đầu vào của người dùng.

Chúng ta sẽ sử dụng các bộ lọc có sẵn trong PHP – PHP Filters

Làm sạch và xác thực dữ liệu đầu vào của người dùng là một trong những nhiệm vụ phổ biến nhất trong khi lập trình web. Để làm cho nhiệm vụ này dễ dàng hơn, PHP cung cấp tiện ích mở rộng filters mà bạn có thể sử dụng để làm sạch hoặc xác thực dữ liệu như địa chỉ email, URL, địa chỉ IP, v.v.

Để xác thực dữ liệu bằng cách sử dụng Filter, bạn cần sử dụng hàm filter_var() của PHP. Cú pháp cơ bản của hàm này như sau:

filter_var(variable, filter, options)

Hàm này có ba tham số trong đó hai tham số filter options là tùy chọn.

Tham số variable là giá trị được lọc, tham số thứ hai là ID của bộ lọc sẽ áp dụng và tham số thứ ba là mảng các tùy chọn liên quan đến bộ lọc.

Hướng dẫn làm sạch và xác thực dữ liệu với bộ lọc PHP (PHP Filters)
Hướng dẫn làm sạch và xác thực dữ liệu với bộ lọc PHP (PHP Filters)

Hãy cùng xem chức năng filter hoạt động như thế nào qua các ví dụ bên dưới đây.

1. Làm sạch một chuỗi với bộ lọc Filter

Ví dụ sau sẽ làm sạch một chuỗi bằng cách xóa tất cả các thẻ HTML khỏi nó:

<?php
  // Comment của người dùng có chứa thẻ HTML
  $comment = "<h1>Chào bạn, hôm nay có gì vui không?</h1>";
 
  // Làm sạch và in ra chuỗi comment đã làm sạch
  $sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
  echo $sanitizedComment;
?>

Sau khi làm sạch với bộ lọc với ID bộ lọc là FILTER_SANITIZE_STRING chúng ta có kết quả đầu ra như sau:

Chào bạn, hôm nay có gì vui không?

2. Xác thực giá trị kiểu số nguyên

Ví dụ sau sẽ xác nhận xem giá trị có phải là số nguyên hợp lệ hay không:

<?php
  // Cho một giá trị số
  $int = 20;
 
  // Xác thực xem biến $int có phải là số nguyên
  if(filter_var($int, FILTER_VALIDATE_INT)){
      echo "<b>$int</b> là số nguyên";
  } else{
      echo "<b>$int</b> không là số nguyên";
  }
?>

Trong ví dụ trên, nếu biến $int gán giá trị 0, đoạn mã sẽ hiển thị thông báo “… không là số nguyên”. Để khắc phục sự cố này, bạn cần kiểm tra rõ ràng giá trị 0, như sau:

<?php
  // Cho một giá trị số
  $int = 0;
 
  // Xác thực xem giá trị có phải số nguyên
  if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, 
  FILTER_VALIDATE_INT)){
      echo "<b>$int</b> là số nguyên";
  } else{
      echo "<b>$int</b> không là số nguyên";
  }
?>

3. Xác thực địa chỉ IP

Ví dụ sau sẽ xác thực xem giá trị có phải là địa chỉ IP hợp lệ hay không:

<?php
  // Cho một địa chỉ IP
  $ip = "172.16.254.1";
 
  // Xác thực địa chỉ IP
  if(filter_var($ip, FILTER_VALIDATE_IP)){
      echo "<b>$ip</b> là địa chỉ IP hợp lệ";
  } else {
      echo "<b>$ip</b> không là địa chỉ IP hợp lệ";
  }
?>

Bạn có thể tiếp tục áp dụng xác thực cho các địa chỉ IP IPV4 hoặc IPV6 bằng cách sử dụng các bộ lọc FILTER_FLAG_IPV4 hoặc FILTER_FLAG_IPV6 tương ứng. Dưới đây là một ví dụ:

<?php
  // Cho một địa chỉ IP
  $ip = "172.16.254.1";
 
  // Xác thực địa chỉ IP
  if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
      echo "<b>$ip</b> là địa chỉ IPV6 hợp lệ";
  } else {
      echo "The <b>$ip</b> không là địa chỉ IPV6 hợp lệ";
  }
?>

>> Tham khảo ngay: Khóa học Lập trình PHP Fullstack chỉ trong 3 tháng.

4. Làm sạch và Xác thực URL

Ví dụ sau đây sẽ cho bạn thấy cách làm sạch và xác thực một url thông qua bộ lọc Fillter của PHP.

<?php
  // Cho một URL
  $url = "https:://laptrinhvienphp.com/";
 
  // Xóa ký tự không hợp lệ khỏi URL
  $urls = filter_var($url, FILTER_SANITIZE_URL);
  
  // Xác thực URL
  if(filter_var($urls, FILTER_VALIDATE_URL)){
      echo "<b>$urls</b> là URL hợp lệ";
  } else{
      echo "<b>$urls</b> không là URL hợp lệ";
  }
?>

Bạn cũng có thể kiểm tra xem URL có chứa chuỗi truy vấn hay không bằng cách sử dụng FILTER_FLAG_QUERY_REQUIRED, như trong ví dụ sau:

<?php
  // Cho một URL
  $url = "http://www.example.com?topic=filters";
 
  // Xác thực URL có chứa chuỗi truy vấn hay không
  if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)) 
  {
      echo "<b>$url</b> chứa chuỗi truy vấn";
  } else{
      echo "<b>$url</b> không chứa chuỗi truy vấn";
  }
?>

5. Cách Xác thực số nguyên trong một khoảng cho phép

Ví dụ sau sẽ xác thực giá trị được cung cấp có phải là số nguyên hay không, cũng như liệu nó có nằm trong phạm vi từ 0 đến 100 hay không.

<?php
  // Cho một số nguyên
  $int = 75;
 
  // Xác thực giá trị trong khoảng từ 0 - 100
  if(filter_var($int, FILTER_VALIDATE_INT, array("options" => 
  array("min_range" => 0,"max_range" => 100)))){
      echo "<b>$int</b> là số nguyên nằm trong khoảng 0 - 100";
  } else{
      echo "<b>$int</b> không là số nguyên nằm trong khoảng 0- 100";
  }
?>

6. Cách xác thực địa chỉ Email hợp lệ sử dụng bộ lọc Filters

Ví dụ sau sử dụng hàm filter_var() với ID bộ lọc là FILTER_SANITIZE_EMAIL để loại bỏ tất cả các ký tự bất hợp pháp từ biến $email, sau đó xác thực xem có đúng là địa chỉ Email hợp lệ hay không với FILTER_VALIDATE_EMAIL:

<?php
  $email = "hello@niithanoi.edu.vn";

  // Loại bỏ ký tự không hợp lệ trong email
  $email = filter_var($email, FILTER_SANITIZE_EMAIL);

  // Xác thực địa chỉ email
  if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
      echo("$email là email hợp lệ");
  } else {
      echo("$email không phải email hợp lệ");
  }
?>

Tổng kết

Như vậy là bạn đã được hướng dẫn 6 cách làm sạchxác thực dữ liệu đầu vào của người dùng với bộ lọc Filters do PHP cung cấp sẵn.

Để tìm hiểu kỹ hơn về các bộ lọc trong PHP. Bạn vui lòng tìm hiểu thêm tại đây.

Bài 28: Hướng dẫn Validate Form trong PHP

Trong Lập trình chúng ta phải xác thực và làm sạch dữ liệu hay thường được gọi là validate form. Trong hướng dẫn này, bạn sẽ tìm hiểu cách validate form trong PHP.

Ở bài trước chúng ta đã tạo form để nhận dữ liệu của người dùng. Nhưng như mình đã nói. Dữ liệu của người dùng có thể “Không sạch”.

Vì thế, trong Lập trình web hay bất cứ lập trình ứng dụng nào khác. Chúng ta phải xác thực và làm sạch dữ liệu hay thường được gọi là validate form.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách validate form trong PHP.

Hướng dẫn Validate Form trong PHP
Hướng dẫn Validate Form trong PHP

Hướng dẫn Làm sạch và Xác thực dữ liệu (Validate) trong PHP

Bạn đã thấy trong các bài hướng dẫn trước, quá trình bắt và hiển thị dữ liệu của form đã gửi khá đơn giản.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách triển khai một form liên hệ đơn giản trên trang web của mình cho phép người dùng gửi nhận xét và phản hồi của họ qua email.

Chúng ta sẽ sử dụng cùng hàm PHP mail() để gửi email.

Chúng ta cũng sẽ triển khai một số tính năng bảo mật cơ bản như Làm sạchXác thực dữ liệu đầu vào của người dùng để chắc chắn rằng người dùng không thể chèn dữ liệu độc hại (ví dụ như tiêm injection) có thể làm tổn hại đến bảo mật trang web hoặc có thể phá vỡ trang web.

Sau đây là tập lệnh tất cả trong một của chúng ta, nó thực hiện những việc sau:

  • Nó sẽ yêu cầu người dùng nhập nhận xét ​​của mình về trang web.
  • Kịch bản tương tự hiển thị form liên hệ và xử lý dữ liệu form liên hệ đã gửi.
  • Kịch bản làm sạchxác thực dữ liệu đầu vào của người dùng. Nếu bất kỳ trường bắt buộc nào (được đánh dấu *) bị thiếu hoặc xác thực không thành công do nhập sai, tập lệnh sẽ hiển thị lại form với thông báo lỗi cho trường tương ứng.
  • Kịch bản ghi nhớ các trường mà người dùng đã điền và điền trước các trường đó khi biểu mẫu được hiển thị lại do lỗi xác thực.
  • Nếu dữ liệu được gửi bởi người dùng có thể chấp nhận được và mọi thứ đều ổn, nó sẽ gửi email đến quản trị viên trang web và hiển thị thông báo thành công cho người dùng.

Tạo file có tên là contact.php và lưu trong thư mục gốc dự án của bạn:

<?php
// Functions to filter user inputs
function filterName($field){
    // Làm sạch tên người dùng
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    
    // Xác thực tên người dùng
    if(filter_var($field, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        return $field;
    } else{
        return FALSE;
    }
}    
function filterEmail($field){
    // Làm sạch Email
    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);
    
    // Xác thực Email
    if(filter_var($field, FILTER_VALIDATE_EMAIL)){
        return $field;
    } else{
        return FALSE;
    }
}
function filterString($field){
    // Làm sạch nội dung
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    if(!empty($field)){
        return $field;
    } else{
        return FALSE;
    }
}
 
// Khai báo biến và khởi tạo các giá trị trống
$nameErr = $emailErr = $messageErr = "";
$name = $email = $subject = $message = "";
 
// Xử lý dữ liệu biểu mẫu khi biểu mẫu được gửi
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // Xác thực tên người dùng
    if(empty($_POST["name"])){
        $nameErr = "Nhập tên của bạn.";
    } else{
        $name = filterName($_POST["name"]);
        if($name == FALSE){
            $nameErr = "Nhập tên hợp lệ.";
        }
    }
    
    // Xác thực Email
    if(empty($_POST["email"])){
        $emailErr = "Nhập địa chỉ Email.";     
    } else{
        $email = filterEmail($_POST["email"]);
        if($email == FALSE){
            $emailErr = "Nhập email hợp lệ.";
        }
    }
    
    // Xác thực tiêu đề
    if(empty($_POST["subject"])){
        $subject = "";
    } else{
        $subject = filterString($_POST["subject"]);
    }
    
    // Xác thực nội dung
    if(empty($_POST["message"])){
        $messageErr = "Điền nhận xét.";     
    } else{
        $message = filterString($_POST["message"]);
        if($message == FALSE){
            $messageErr = "Điền nhận xét hợp lệ.";
        }
    }
    
    // Check input errors before sending email
    if(empty($nameErr) && empty($emailErr) && empty($messageErr)){
        // Địa chỉ Email người nhận
        $to = 'webmaster@example.com';
        
        // Tạo tiêu đề Email
        $headers = 'From: '. $email . "\r\n" .
        'Reply-To: '. $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        
        // Gửi Email
        if(mail($to, $subject, $message, $headers)){
            echo '<p class="success">Nhận xét của bạn gửi thành công!</p>';
        } else{
            echo '<p class="error">Không thể gửi. Vui lòng thử lại sau!</p>';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Contact Form</title>
    <style type="text/css">
        .error{ color: red; }
        .success{ color: green; }
    </style>
</head>
<body>
    <h2>Contact Us</h2>
    <p>Please fill in this form and send us.</p>
    <form action="contact.php" method="post">
        <p>
            <label for="inputName">Name:<sup>*</sup></label>
            <input type="text" name="name" id="inputName" value="<?php echo $name; ?>">
            <span class="error"><?php echo $nameErr; ?></span>
        </p>
        <p>
            <label for="inputEmail">Email:<sup>*</sup></label>
            <input type="text" name="email" id="inputEmail" value="<?php echo $email; ?>">
            <span class="error"><?php echo $emailErr; ?></span>
        </p>
        <p>
            <label for="inputSubject">Subject:</label>
            <input type="text" name="subject" id="inputSubject" value="<?php echo $subject; ?>">
        </p>
        <p>
            <label for="inputComment">Message:<sup>*</sup></label>
            <textarea name="message" id="inputComment" rows="5" cols="30"><?php echo $message; ?></textarea>
            <span class="error"><?php echo $messageErr; ?></span>
        </p>
        <input type="submit" value="Send">
        <input type="reset" value="Reset">
    </form>
</body>
</html>

Giải thích code Validate Form trong PHP

Bạn có thấy, đây là đoạn mã Validate form đơn giản nhất. Chúng ta sẽ đi vào giải thích cụ thể:

  • filterName() function (line no-03) xác nhận giá trị đầu vào là tên người dùng. Tên hợp lệ chỉ có thể chứa các ký tự chữ cái (a-z, A-Z).
  • filterEmail() function (line no-14) xác nhận giá trị đầu vào như địa chỉ email.
  • filterString() function (line no-25) chỉ làm sạch giá trị đầu vào bằng cách loại bỏ thẻ HTML và các ký tự đặc biệt.
  • Thuộc tính action="contact.php" (line no-111) bên trong thẻ <form> chỉ định rằng tệp contact.php sẽ được thực thi khi người dùng nhấn nút gửi.
  • Mã PHP bên trong giá trị thuộc tính của thẻ <input> và textarea, ví dụ:
    <?php echo $name; ?> Hiển thị giá trị được điền sẵn khi biểu mẫu được hiển thị lại xảy ra lỗi xác thực.
  • Mã PHP bên trong class .error, ví dụ <span class=”error”><?php echo $nameErr; ?></span> Hiển thị lỗi theo trường tương ứng.

Phần còn trong mã Validate form trong PHP chúng ta đã tìm hiểu trong các chương trước. Để tìm hiểu thêm về vệ sinh và xác thực các bộ lọc, vui lòng xem tham khảo thêm PHP Fillter tại trang chủ của PHP tại đây

Tham khảo: Code hướng dẫn Validate form bằng PHP

Bài 19: Hướng dẫn iclude và require trong PHP

Trong bài học này chúng ta sẽ học về include và require trong lập trình PHP. Học Lập Trình PHP từ A – Z

Trong bài học này chúng ta sẽ học về include và require trong lập trình PHP.

Yêu cầu một file PHP vào một file PHP khác trong lập trình PHP

Câu lệnh include()require() cho phép bạn load một tệp PHP vào trong một tệp PHP khác.

Inculde một tệp tạo ra kết quả tương tự như sao chép mã từ tệp được chỉ định và dán vào vị trí nơi nó được gọi.

Bạn có thể tiết kiệm rất nhiều thời gian và làm việc thông qua việc include các tệp.

Chỉ cần lưu trữ một đoạn mã trong một tệp riêng biệt và đưa nó vào bất cứ nơi nào bạn muốn bằng cách sử dụng các câu lệnh include() và require() thay vì copy / paste hay viết lại code nhiều lần.

Trong tất cả các trang của trang web chúng ta thường có những đoạn header, footer và menu giống nhau.

Việc viết riêng từng file header, footer, menu

giúp bạn include chúng ở bất kỳ trang nào mà không cần phải viết lại mấy đoạn code đó.

Cú pháp cơ bản của câu lệnh include () và require() có thể được viết như sau:

// Cú pháp include
include("path/to/filename");
// Hoặc
include "path/to/filename";

// Cú pháp require
require("path/to/filename");
// Hoặc
require "path/to/filename";

TIP: Giống như các câu lệnh print và echo, bạn có thể bỏ qua dấu ngoặc đơn trong khi sử dụng các câu lệnh include và require như đã trình bày ở trên:

Ví dụ sau đây sẽ cho bạn thấy cách bao gồm các đoạn code header, footer và menu chung được lưu trữ trong các tệp ‘header.php’, ‘footer.php’ và ‘menu.php’ riêng biệt trong tất cả các trang của trang web của bạn.

Sử dụng kỹ thuật này, bạn có thể cập nhật tất cả các trang của trang web cùng một lúc bằng cách thực hiện các thay đổi trong một tệp, việc này giúp tiết kiệm rất nhiều công sức khi lập trình.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Tutorial Republic</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>Welcome to Our Website!</h1>
    <p>Here you will find lots of useful information.</p>
<?php include "footer.php"; ?>
</body>
</html>

Trong ví dụ trên thì bạn có thể thấy, thay vì viết mã dài loằng ngoằng cho header, footer và menu thì chúng ta nên tách ra file riêng.

Sau đó khi nào muốn dùng thì chỉ cần include hoặc require là xong.

Khi bạn thực hiện thay đổi trong các file đó thì tất cả các nơi chúng được sử dụng sẽ tự động cập nhật theo. (Quá tiết kiệm thời gian luôn).

=> Dễ quản lý, dễ bảo trì code nữa.

Sự khác nhau giữa câu lệnh include và riquire trong PHP

Bạn có thể suy nghĩ:

  • Nếu chúng ta có thể gọi các tệp bằng cách sử dụng câu lệnh include() thì tại sao chúng ta cần có require()?

Thông thường, câu lệnh require() hoạt động như include().

Sự khác biệt duy nhất là:

  • Câu lệnh include() sẽ chỉ tạo cảnh báo PHP nhưng cho phép tiếp tục thực thi tập lệnh nếu không tìm thấy tệp được include.
  • Trong khi câu lệnh require() sẽ tạo ra ném ra một lỗi và dừng thực thi tập lệnh luôn.

Ví dụ:

<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php displayTitle($home_page); ?></title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>Welcome to Our Website!</h1>
    <p>Here you will find lots of useful information.</p>
<?php include "footer.php"; ?>
</body>
</html>

Chạy đoạn mã trên và xem thử kết quả.

Lưu ý: Bạn nên sử dụng câu lệnh require() nếu bạn nhất định cần đến các tệp đó để chương trình tiếp tục chạy được ổn định.

Cách sử dụng câu lệnh Include_once và require_once trong PHP

Nếu bạn vô tình gọi cùng một tệp (thường là các function hoặc class) nhiều hơn một lần trong code của bạn bằng cách sử dụng các câu lệnh include() hoặc require(), nó có thể gây ra xung đột.

Để ngăn chặn tình huống này, PHP cung cấp các câu lệnh include_oncecâu lệnh require_once.

Các câu lệnh này hoạt động theo cùng một cách như include và require nhưng nó có một ngoại lệ.

Các câu lệnh include_once và require_once sẽ chỉ được thêm vào một lần ngay cả khi được yêu cầu thêm vào lần thứ hai, tức là nếu tệp chỉ định đã được đưa vào trước đó thì tệp đó sẽ không được thêm vào lại.

Để hiểu rõ hơn về cách thức hoạt động của nó, hãy xem một ví dụ. Giả sử chúng ta có tệp ‘my_fifts.php’ với code như sau:

<?php
function multiplySelf($var){
    $var *= $var; // multiply variable by itself
    echo $var;
}
?>

Đây là code file PHP khác trong đó chúng ta sẽ include tệp ‘my_fifts.php’.

<?php
// Including file
require "my_functions.php";
// Calling the function
multiplySelf(2); // Output: 4
echo "<br>";
 
// Including file once again
require "my_functions.php";
// Calling the function
multiplySelf(5); // Doesn't execute
?>

Khi bạn chạy đoạn mã trên, bạn sẽ thấy thông báo lỗi đại loại như sau:

“Fatal error: Cannot redeclare multiplySelf()”

Điều này xảy ra vì ‘my_fifts.php’ được thêm vào đến hai lần, có nghĩa là hàm multiplySelf() được định nghĩa hai lần.

Điều này khiến PHP dừng thực thi tập lệnh và gây ra lỗi nghiêm trọng. Bây giờ viết lại ví dụ trên với require_once.

<?php
// Including file
require_once "my_functions.php";
// Calling the function
multiplySelf(2); // Output: 4
echo "<br>";
 
// Including file once again
require_once "my_functions.php";
// Calling the function
multiplySelf(5); // Output: 25
?>

Như bạn có thể thấy, bằng cách sử dụng require_once() thay vì require(), chương trình đã hoạt động đúng như chúng ta mong đợi.

Tổng kết

Như vậy là bạn đã biết cách sử dụng include / include_once và require / require_once trong PHP. Bài tiếp theo chúng ta sẽ tìm hiểu về file sytem function trong PHP.

Bài 18: Ngày (Date) và giờ (time) trong PHP

Trong bài học về PHP này, bạn sẽ học cách trích xuất hoặc định dạng ngày và giờ trong PHP.

Trong bài học về PHP này, bạn sẽ học cách trích xuất hoặc định dạng ngày và giờ trong PHP.

Hàm date và hàm time trong PHP

Hàm date() trong PHP

Hàm date () của PHP chuyển đổi dấu thời gian thành ngày và giờ dễ đọc hơn.

Máy tính lưu trữ ngày và giờ theo định dạng có tên là Dấu thời gian UNIX, tính thời gian là số giây kể từ khi bắt đầu thời kỳ Unix (midnight Greenwich có nghĩa là vào ngày 1 tháng 1 năm 1970 tức là ngày 1 tháng 1 năm 1970 00:00:00 GMT)

Vì đây là định dạng không thân thiện để chúng ta dễ dàng đọc hiểu, vậy nên:

  • PHP chuyển đổi dấu thời gian thành định dạng có thể đọc được cho con người
  • Và ngược lại, Chuyển ngày từ ký hiệu thân thiện thành dấu thời gian mà máy tính hiểu được.

Cú pháp của hàm date() trong PHP được viết như sau:

date(format, timestamp)

Tham số format của hàm date () là bắt buộc, chỉ định định dạng của ngày và giờ trả về.

Tuy nhiên, timestamp là một tham số tùy chọn, nếu không được truyền vào thì ngày và giờ hiện tại sẽ được sử dụng.

Ví dụ, các khối lệnh sau đây hiển thị ngày hôm nay:

<?php
  $today = date("d/m/Y");
  echo $today;
?>

Lưu ý: Hàm date() của PHP trả về ngày và giờ hiện tại theo đồng hồ tích hợp của máy chủ web nơi chương trình được thực thi. Nếu bạn chạy trên localhost thì nó sẽ lấy định dạng theo máy tính của bạn.

Định dạng Ngày và Giờ với PHP

Tham số format của hàm date() trên thực tế là một chuỗi có thể chứa nhiều ký tự cho phép bạn tạo một chuỗi ngày chứa các thành phần khác nhau của ngày và giờ, như ngày trong tuần, sáng (AM_) hoặc chiều (PM), v.v …

Dưới đây là một số các ký tự định dạng liên quan đến ngày thường được sử dụng:

  • d – Đại diện cho ngày trong tháng: Hai chữ số có số 0 đứng đầu (01 hoặc 31)
  • D – Đại diện cho ngày trong tuần dưới dạng chữ viết tắt (từ Mon đến Sun)
  • m – Biểu thị tháng bằng số có số 0 đứng đầu (01 hoặc 12)
  • M – Đại diện cho tháng bằng văn bản , viết tắt (từ Jan đến Dec)
  • y – Đại diện cho năm bằng hai chữ số (01 hoặc 19)
  • Y – Năm đại diện bằng bốn chữ số (2001 hoặc 2019)

Các phần của thời gian có thể được phân tách bằng cách chèn các ký tự khác, như dấu gạch nối (-), dấu chấm (.), Dấu gạch chéo (/) hoặc dấu cách để thêm định dạng hình bổ sung:

<?php
  echo date("d/m/Y") . "<br>";
  echo date("d-m-Y") . "<br>";
  echo date("d.m.Y");
?>

Lưu ý: Bạn có thể sử dụng hàm date() của PHP để tự động cập nhật thời hạn bản quyền trên trang web của mình, như:

Copyright @ 2002-<?php echo date("Y")?> 

Tương tự, bạn có thể sử dụng các ký tự sau để định dạng chuỗi thời gian:

  • h – Biểu diễn giờ ở định dạng 12 giờ với các số 0 đứng đầu (01 đến 12)
  • H – Biểu thị giờ ở định dạng 24 giờ với các số 0 đứng đầu (00 đến 23) 
  • i – Biểu thị số phút với các số 0 đứng đầu (00 đến 59) 
  • s – Đại diện cho giây với các số 0 đứng đầu (00 đến 59) 
  • a – Đại diện cho chữ thường thời gian trước buổi trưa hoặc sau buổi trưa (am hoặc pm)
  • A – Đại diện cho chữ hoa thời gian trước buổi trưa hoặc sau buổi trưa (AM hoặc PM)
<?php
  echo date("h:i:s") . "<br>";
  echo date("F d, Y h:i:s A") . "<br>";
  echo date("h:i a");
?>

Hàm time() trong PHP

Hàm time() được sử dụng để lấy thời gian hiện tại dưới dạng Unix timestamp (số giây kể từ khi bắt đầu thời kỳ Unix: ngày 1 tháng 1 năm 1970 00:00:00 GMT).

<?php
  // Thử hiển thị thời gian hiện tại: 10:32:47 ngày 15/04/2019 
  $timestamp = time();
  echo($timestamp);
?>

Kết quả nhận được sẽ là:

1555324367

Chúng ta có thể chuyển $timestamp này thành ngày có thể đọc được của con người thông qua việc chuyển nó bằng hàm date() đã được giới thiệu trước đó.

<?php
  $timestamp = 1555324367;
  echo(date("F d, Y h:i:s", $timestamp));
?>
April 15, 2019 10:32:47

Hàm mktime() trong PHP

Hàm mktime() được sử dụng để tạo dấu thời gian dựa trên ngày và giờ cụ thể.

Nếu không có ngày và giờ được cung cấp, dấu thời gian cho ngày và giờ hiện tại sẽ được trả về.

Cú pháp của hàm mktime() có thể được cung cấp với:

mktime(hour, minute, second, month, day, year)

Ví dụ sau hiển thị dấu thời gian tương ứng với 3:20:12 chiều ngày 10 tháng 5 năm 2014:

<?php
// Create the timestamp for a particular date
echo mktime(13, 45, 00, 4, 16, 2019);
?>

Kết quả nhận được là:

1555422300

Lưu ý: Bạn có thể bỏ qua bao nhiêu đối số tùy thích và giá trị tương ứng với thời gian hiện tại sẽ được sử dụng thay thế. Nếu bạn bỏ qua tất cả các đối số, hàm mktime() sẽ trả về dấu thời gian UNIX tương ứng với ngày và giờ hiện tại, giống như time().

Hàm mktime() cũng có thể được sử dụng để tìm tên ngày trong tuần tương ứng với một ngày cụ thể.

Để thực hiện việc này, chỉ cần sử dụng ký tự ‘l’ (chữ thường ‘L’) với dấu thời gian của bạn, như trong ví dụ sau, hiển thị ngày rơi vào ngày 16 tháng 4 năm 2019:

<?php
// Get the weekday name of a particular date
echo date('l', mktime(0, 0, 0, 4, 16, 2019));
?>

Hôm nay là thứ 3, và kết quả sẽ trả về là:

Tuesday

Hàm mktime() cũng có thể được sử dụng để tìm một ngày cụ thể trong tương lai sau một khoảng thời gian cụ thể.

Như trong ví dụ sau, ngày nào sẽ hiển thị ngày rơi sau 30 tháng kể từ ngày hiện tại?

<?php
// Hôm nay là 16 tháng 4 năm 2019
$futureDate = mktime(0, 0, 0, date("m")+30, date("d"), date("Y"));
echo date("d/m/Y", $futureDate);
?>

30 tháng sau kể từ ngày 16 tháng 4 năm 2019 sẽ là:

16/10/2021

Tổng kết

Như vậy là bạn đã biết sử dụng cơ bản các hàm date(), time(), mktime() . Chúng ta sẽ tìm hiểu cụ thể hơn nếu sau này gặp các trường hợp và yêu cầu cụ thể.

Hoặc bạn có thể tìm hiểu thêm về các hàm date, time trong PHP tại đây

Bài 15: Tìm hiểu về Function (Hàm) trong PHP

Trong bài học này bạn sẽ được học về cách tạo các function (hàm) tùy chỉnh trong PHP. Cách định nghĩa function và một số vấn đề liên quan với function.

Trong bài học này bạn sẽ được học về cách tạo các function (hàm) tùy chỉnh trong PHP. Cách định nghĩa function và một số vấn đề liên quan với function.

Trong PHP thì vẫn có những function đã được dựng sẵn (built-in functions). Bạn cũng có thể gọi trực tiếp nó ra để thực thi những tác vụ cụ thể

Ví dụ như: gettype()print_r()var_dump

Bạn có thể xem thêm những hàm đã được dựng sẵn trong PHP tại đây.

1. Ưu điểm khi sử dụng Function (Hàm) do User tự định nghĩa trong PHP

Ngoài các hàm dựng sẵn (built-in function), PHP cũng cho phép bạn định nghĩa (define) các function (hàm) của riêng mình.

Đó là một cách để tạo các đoạn code có thể tái sử dụng để thực hiện các tác vụ cụ thể và có thể được giữ và duy trì độc lập với chương trình chính.

Dưới đây là một số lợi thế của việc sử dụng các hàm:

1.1. Các hàm làm giảm sự lặp lại code trong một chương trình

Hàm cho phép bạn trích xuất khối mã thường được sử dụng thành một single component.

Bây giờ bạn có thể thực hiện cùng một tác vụ bằng cách gọi hàm này bất cứ nơi nào bạn muốn trong tập lệnh của mình mà không phải sao chép và viết lại cùng một khối lệnh nhiều lần.

1.2. Hàm làm cho mã dễ bảo trì hơn nhiều

Vì một hàm được tạo một lần có thể được sử dụng nhiều lần, do đó, mọi thay đổi được thực hiện bên trong hàm sẽ tự động được điều chỉnh tại tất cả các vị trí mà không cần tìm đến từng vị trí một.

1.3. Các hàm giúp dễ dàng loại bỏ các lỗi hơn

Khi chương trình được chia thành các hàm, nếu có lỗi xảy ra, bạn biết chính xác hàm nào gây ra Bug (lỗi) và tìm nó ở đâu.

=> Do đó, Debug (sửa lỗi) trở nên dễ dàng hơn nhiều.

1.4. Các hàm có thể được sử dụng lại trong ứng dụng khác

Vì một hàm được tách ra khỏi phần còn lại của tập lệnh, nên dễ dàng sử dụng lại hàm tương tự trong các ứng dụng khác chỉ bằng cách include tệp php chứa các hàm đó.

Phần sau đây sẽ cho bạn thấy bạn có thể dễ dàng định nghĩa Function của mình như thế nào trong PHP.

2. Cách tạo và gọi hàm trong PHP (Creat and invoking function in PHP)

Cú pháp cơ bản của việc tạo một hàm tùy chỉnh như sau:

function functionName(){
    // Code to be executed
}

Việc khai báo một hàm do chúng ta tự định nghĩa bắt đầu bằng từ function, theo sau là tên của hàm bạn muốn tạo.

Tiếp theo nữa là dấu ngoặc đơn (), và và cuối cùng đặt mã thực thi của hàm của bạn vào giữa các dấu ngoặc nhọn {}.

Đây là một ví dụ đơn giản về chức năng do người dùng xác định, hiển thị ngày hôm nay:

<?php
// Defining function
function whatIsToday(){
    echo "Today is " . date('l', mktime());
}
// Calling function
whatIsToday();
?>

TIP: Tên hàm phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới không được bắt đầu bằng một số, theo sau là nhiều chữ cái, số hoặc ký tự gạch dưới tùy ý. Tên hàm không phân biệt chữ hoa chữ thường.

3. Tìm hiểu về tham số của hàm trong PHP

Bạn có thể chỉ định tham số khi bạn định nghĩa hàm của mình để chấp nhận giá trị đầu vào trong thời gian chạy.

Các tham số hoạt động như các biến giữ chỗ trong một hàm.

Chúng được thay thế vào bằng các giá trị (được gọi là đối số) được cung cấp cho hàm tại thời điểm gọi hàm.

function myFunc($oneParameter, $anotherParameter){
    // Code to be executed
}

Bạn có thể định nghĩa bao nhiêu tham số tùy thích.

Tuy nhiên, đối với mỗi tham số bạn chỉ định, một đối số tương ứng cần được truyền cho hàm khi nó được gọi.

Hàm getSum() trong ví dụ sau lấy hai giá trị nguyên làm đối số, chỉ cần cộng chúng lại với nhau và sau đó hiển thị kết quả trong trình duyệt.

<?php
// Defining function
function getSum($num1, $num2){
  $sum = $num1 + $num2;
  echo "Sum of the two numbers $num1 and $num2 is : $sum";
}
 
// Calling function
getSum(10, 20);
?>

Đầu ra của đoạn mã trên sẽ là:

Sum of the two numbers 10 and 20 is : 30

TIP: Đối số là một giá trị mà bạn truyền cho hàm và tham số là biến trong hàm nhận đối số. Tuy nhiên, trong sử dụng phổ biến, các thuật ngữ này có thể hoán đổi cho nhau, tức là một đối số là một tham số là một đối số.

Thực chất chúng nó là 1, chỉ là thời điểm truyền vào khác nhau. Ngắn gọn: Tham số là biến giữ chỗ đợi giá trị của đối số truyền vào lúc gọi.

4. Cách tạo truyền giá trị mặc định cho tham số khi tạo hàm trong PHP

Trong khi tạo hàm trong PHP, bạn không chỉ có thể truyền tham số mà có có thể đặt giá trị mặc định cho tham số đó.

VD:

<?php
// Defining function
function customFont($font, $size=1.5){
    echo "<p style=\"font-family: $font; font-size: {$size}em;\">Hello, world!</p>";
}
 
// Calling function
customFont("Arial", 2);
customFont("Times", 3);
customFont("Courier");
?>

Như bạn có thể thấy, khi gọi customFont() mà không truyền vào giá trị cho đối số thứ 2. Lúc này PHP Engine sẽ sử dụng giá trị mặc định cho tham số $size là 1,5 để thực thi.

5. Cách trả về các giá trị từ một hàm

Một hàm có thể trả về một giá trị cho tập lệnh được gọi là hàm sử dụng câu lệnh return. Giá trị trả về có thể thuộc bất kỳ loại nào, bao gồm mảng (array) và đối tượng (object).

Ta cùng xem ví dụ sau:

<?php
// Defining function
function getSum($num1, $num2){
    $total = $num1 + $num2;
    return $total;
}
 
// Printing returned value
echo getSum(5, 10); // Outputs: 15
?>

Một hàm không thể trả về nhiều giá trị. Tuy nhiên, bạn có thể thu được kết quả tương tự bằng cách trả về một mảng, như được minh họa trong ví dụ sau.

<?php
// Defining function
function divideNumbers($dividend, $divisor){
    $quotient = $dividend / $divisor;
    $array = array($dividend, $divisor, $quotient);
    return $array;
}
 
// Assign variables as if they were an array
list($dividend, $divisor, $quotient) = divideNumbers(10, 2);
echo $dividend;  // Outputs: 10
echo $divisor;   // Outputs: 2
echo $quotient;  // Outputs: 5
?>

Như bạn thấy, cách trả về một mảng cũng khá là đơn giản phải không?

6. Cách truyền đối số cho hàm theo tham chiếu trong PHP

Trong PHP có hai cách bạn có thể truyền đối số cho hàm:

  • theo value (giá trị)
  • và theo reference (tham chiếu).

Theo mặc định, các argument (đối số) hàm được truyền theo value để nếu giá trị của đối số trong hàm bị thay đổi, nó không bị ảnh hưởng bên ngoài hàm.

Tuy nhiên, để cho phép một hàm sửa đổi các đối số của nó, chúng phải được truyền bằng reference (tham chiếu).

Truyền đối số bằng tham chiếu được thực hiện bằng cách thêm dấu và (&) vào tên đối số trong khi định nghĩa hàm, như trong ví dụ dưới đây:

<?php
/* Defining a function that multiply a number
by itself and return the new value */
function selfMultiply(&$number){
    $number *= $number;
    return $number;
}
 
$mynum = 5;
echo $mynum; // Outputs: 5
 
selfMultiply($mynum);
echo $mynum; // Outputs: 25
?>

Bạn có thể thấy, khi định nghĩa hàm selfMultiply thì ta truyền tham số $number. Nhưng vì chúng ta muốn sửa đổi đối số khi truyền vào (bằng cách sử dụng tham chiếu) thì….

Khi tạo hàm chúng ta phải truyền tham số là &$number.

7. Tìm hiểu về phạm vi biến (Variable Scope) trong Lập trình PHP

Trong lập trình PHP bạn có thể khai báo các biến ở bất cứ đâu trong tập lệnh PHP.

Nhưng, vị trí của khai báo xác định mức độ hiển thị của một biến trong chương trình PHP, tức là vị trí khai báo của biến sẽ ảnh hưởng đến việc nơi biến có thể được sử dụng hoặc truy cập.

Khả năng tiếp cận này được gọi là phạm vi biến (Variable Scope)

Theo mặc định, các biến được khai báo trong một hàm là biến cục bộ và chúng không thể được xem hoặc thao tác từ bên ngoài hàm đó, như được minh họa trong ví dụ dưới đây:

<?php
// Defining function
function test(){
    $greet = "Hello World!";
    echo $greet;
}
 
test(); // Outputs: Hello World!
 
echo $greet; // Generate undefined variable error
?>

Tương tự, nếu bạn cố gắng truy cập hoặc nhập một biến được tạo ở bên ngoài vào bên trong hàm, bạn sẽ gặp một lỗi biến không xác định (Generate undefined variable error), như trong ví dụ sau:

<?php
$greet = "Hello World!";
 
// Defining function
function test(){
    echo $greet;
}
 
test();  // Generate undefined variable error
 
echo $greet; // Outputs: Hello World!
?>

Như bạn có thể thấy trong các ví dụ trên:

  • Biến được khai báo bên trong hàm không thể truy cập được từ bên ngoài
  • Tương tự như vậy, biến được khai báo bên ngoài hàm không thể truy cập được bên trong hàm.

Sự tách biệt này làm hạn chế việc các biến trong một hàm bị ảnh hưởng bởi các biến trong chương trình chính.

TIP: Có thể sử dụng lại cùng một tên cho một biến được tạo trong các hàm khác nhau, vì các biến cục bộ chỉ được nhận dạng bởi hàm mà chúng được khai báo.

8. Cách sử dụng global keyword trong lập trình PHP

Trong lập trình, sẽ xảy ra tình huống bạn cần nhập một biến từ chương trình chính vào trong một hàm hoặc ngược lại.

Trong các trường hợp như vậy, bạn có thể sử dụng từ khóa global trước các biến trong hàm.

Từ khóa global biến biến được tạo thành một biến toàn cục, làm cho nó hiển thị hoặc có thể truy cập cả bên trong và bên ngoài hàm, như trong ví dụ dưới đây:

<?php
$greet = "Hello World!";
 
// Defining function
function test(){
    global $greet;
    echo $greet;
}
 
test(); // Outpus: Hello World!
echo $greet; // Outpus: Hello World!
 
// Assign a new value to variable
$greet = "Goodbye";
 
test(); // Outputs: Goodbye
echo $greet; // Outputs: Goodbye
?>

Ở ví dụ trên bạn có thể thấy.

Biến $greet được tạo bên trong hàm test()

Khi khai báo biến $greet thì ta thêm keyword global trước đó như vậy:

global $greet;

Lúc này, biến $greet từ biến cục bộ sẽ biến thành biến toàn cục. Và có thể truy cập ở bên ngoài hàm.

Bạn sẽ được tìm hiểu thêm về khả năng hiển thị (visibility) và kiểm soát truy cập (access control) trong bài học Class và Object trong PHP.

9. Cách tạo hàm đệ quy (Recursive Functions) trong Lập trình PHP

Hàm đệ quy (recursive function) là một hàm tự gọi đi gọi lại cho đến khi một điều kiện được thỏa mãn.

Các hàm đệ quy thường được sử dụng để giải các phép tính toán học phức tạp hoặc xử lý các cấu trúc lồng nhau, ví dụ:

  • In tất cả các phần tử của một mảng được lồng nhau.
<?php
// Defining recursive function
function printValues($arr) {
    global $count;
    global $items;
    
    // Check input is an array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    /*
    Loop through array, if value is itself an array recursively call the
    function else add the value found to the output items array,
    and increment counter by 1 for each value found
    */
    foreach($arr as $a){
        if(is_array($a)){
            printValues($a);
        } else{
            $items[] = $a;
            $count++;
        }
    }
    
    // Return total count and values found in array
    return array('total' => $count, 'values' => $items);
}
 
// Define nested array
$species = array(
    "birds" => array(
        "Eagle",
        "Parrot",
        "Swan"
    ),
    "mammals" => array(
        "Human",
        "cat" => array(
            "Lion",
            "Tiger",
            "Jaguar"
        ),
        "Elephant",
        "Monkey"
    ),
    "reptiles" => array(
        "snake" => array(
            "Cobra" => array(
                "King Cobra",
                "Egyptian cobra"
            ),
            "Viper",
            "Anaconda"
        ),
        "Crocodile",
        "Dinosaur" => array(
            "T-rex",
            "Alamosaurus"
        )
    )
);
 
// Count and print values in nested array
$result = printValues($species);
echo $result['total'] . ' value(s) found: ';
echo implode(', ', $result['values']);
?>

TIP: Hãy thật cẩn trọng khi tạo các hàm đệ quy, bởi vì nếu mã được viết không đúng, nó có thể dẫn đến một vòng lặp vô hạn của chức năng gọi hàm khiến máy bạn bị đơ.

TỔNG KẾT

Như vậy, qua bài học về hàm (function) này, bạn đã được học về:

  • Cách tạo và gọi hàm trong PHP
  • Cách truyền tham số, đối số vào hàm
  • Cách truyền giá trị mặc định cho tham số
  • Cách truyền đối số cho hàm theo tham chiếu
  • Tìm hiểu về phạm vi của biến (variable scope) trong PHP
  • Cách sử dụng Global keyword
  • Cách tạo hàm đệ quy

Hãy ghi nhớ và làm lại các ví dụ, nếu chắc chắn bạn đã hiểu rõ và không quên các vấn đề liên quan đến hàm trong PHP thì hãy chuyển sang bài tiếp theo.

Bài 14: Cách sử dụng vòng lặp (loop) trong PHP

Trong bài học này, bạn sẽ học cách sử dụng vòng lặp while, do…while, for, foreach để lặp lại một loạt các hành động trong PHP.

Trong bài học này, bạn sẽ học cách sử dụng vòng lặp while, do…while, for, foreach để lặp lại một loạt các hành động trong PHP.

1. Các kiểu vòng lặp trong PHP

Các vòng lặp được sử dụng để thực thi cùng một khối mã nhiều lần, cho đến khi một điều kiện nhất định được đáp ứng.

Ý tưởng cơ bản đằng sau một vòng lặp là tự động hóa các nhiệm vụ lặp đi lặp lại trong một chương trình để tiết kiệm thời gian và công sức và tối ưu hơn.

Trong PHP hỗ trợ bốn loại vòng lặp khác nhau:

  • while – khi ABC (điều kiện) vẫn còn đúng thì thực hiện công việc XYZ
  • do…while – Thực hiện XYZ 1 lần rồi sau đó mới kiểm tra ABC. Nếu đúng thì thực hiện XYZ tiếp cho đến khi ABC sai.
  • for – Lặp lại XYZ cho đến khi bộ đếm đạt đến số nhất định.
  • foreach – Lặp qua các phần tử trong mảng

Bạn cũng sẽ học cách lặp qua các giá trị của mảng bằng vòng lặp foreach() ở cuối chương này. Vòng lặp foreach() được sinh ra là để dành cho mảng.

2. Vòng lặp While trong PHP – While loop

Câu lệnh while sẽ lặp qua một khối mã cho nếu điều kiện trong câu lệnh while đánh giá là đúng.

Sytax:

while(condition){
    // Code to be executed
}

Ví dụ bên dưới đây xác định một vòng lặp bắt đầu bằng $i = 1.

Vòng lặp sẽ tiếp tục chạy miễn là $i nhỏ hơn hoặc bằng 3. $i sẽ tăng thêm 1 mỗi lần vòng lặp chạy:

<?php
$i = 1;
while($i <= 3){
    $i++;
    echo "The number is " . $i . "<br>";
}
?>

Kết quả:

The number is 2
The number is 3
The number is 4

3. Vòng lặp do…while trong PHP

Vòng lặp do-while là một biến thể của vòng lặp while, đánh giá điều kiện ở cuối mỗi lần lặp của vòng lặp.

Với vòng lặp do-while, khối mã được thực thi một lần và sau đó điều kiện được xem xét đến, nếu điều kiện là đúng, câu lệnh được lặp lại miễn là điều kiện được chỉ định được đánh giá là đúng.

Syntax:

do{
    // Code to be executed
}
while(condition);

Ví dụ sau định nghĩa một vòng lặp bắt đầu bằng $i = 1.

Sau đó, nó sẽ tăng $i lên 1 và in đầu ra.

Sau đó, điều kiện được xem xét và vòng lặp sẽ tiếp tục chạy miễn là $i nhỏ hơn hoặc bằng 3.

<?php
$i = 1;
do{
    $i++;
    echo "The number is " . $i . "<br>";
}
while($i <= 3);
?>

Kết quả:

The number is 2
The number is 3
The number is 4

Như bạn thấy, với vòng lặp do…while thì lần đầu tiên không cần kiểm tra điều kiện.

Sự khác biệt giữa while và do…while khi lặp

Vòng lặp while khác với vòng lặp do…while như sau:

  • Với vòng lặp while, điều kiện cần đánh giá được kiểm tra ở đầu mỗi lần lặp vòng lặp, do đó, nếu biểu thức điều kiện ước lượng thành false, vòng lặp sẽ không bao giờ được thực thi.
  • Mặt khác, với vòng lặp do-while, vòng lặp sẽ luôn được thực thi một lần, ngay cả khi biểu thức điều kiện là sai, bởi vì điều kiện được ước tính ở cuối vòng lặp thay vì bắt đầu.

4. Vòng lặp for() trong PHP – For loop

Vòng lặp for lặp lại một khối mã cho đến khi một điều kiện nhất định được đáp ứng. Nó thường được sử dụng để thực thi một khối mã trong một số lần nhất định.

Syntax:

for(initialization; condition; increment){
    // Code to be executed
}

3 tham số của vòng lặp for có nghĩa là:

  • initialization: Được sử dụng để khởi tạo các biến đếm và được đánh giá một lần vô điều kiện trước lần thực hiện đầu tiên của phần thân của vòng lặp
  • condition: Vào đầu mỗi lần lặp, điều kiện được đánh giá. Nếu nó đánh giá là đúng, vòng lặp tiếp tục và các câu lệnh lồng nhau được thực thi. Nếu nó ước tính thành false, việc thực hiện vòng lặp kết thúc.
  • increment: Nó cập nhật bộ đếm vòng lặp với một giá trị mới. Nó được đánh giá vào cuối mỗi lần lặp.

Ví dụ dưới đây định nghĩa một vòng lặp bắt đầu bằng $i = 1. Vòng lặp sẽ tiếp tục cho đến khi $i nhỏ hơn hoặc bằng 3.

Biến $ i sẽ tăng thêm 1 mỗi lần vòng lặp chạy:

<?php
for($i=1; $i<=3; $i++){
    echo "The number is " . $i . "<br>";
}
?>

Kết quả:

The number is 1
The number is 2
The number is 3

5. Vòng lặp foreach() trong PHP – Foreach loop

Vòng lặp foreach được sử dụng để lặp qua các mảng.

Syntax:

foreach($array as $value){
    // Code to be executed
}

Ví dụ sau đây cho thấy một vòng lặp sẽ in các giá trị của mảng đã cho:

<?php
$colors = array("Red", "Green", "Blue");
 
// Loop through colors array
foreach($colors as $value){
    echo $value . "<br>";
}
?>

Kết quả:

Red
Green
Blue

Có thêm một cú pháp của vòng lặp foreach, đó là phần mở rộng của vòng lặp đầu tiên.

foreach($array as $key => $value){
    // Code to be executed
}

Ví dụ:

<?php
$superhero = array(
    "name" => "Peter Parker",
    "email" => "peterparker@mail.com",
    "age" => 18
);
 
// Loop through superhero array
foreach($superhero as $key => $value){
    echo $key . " : " . $value . "<br>";
}
?>

Kết quả:

name : Peter Parker
email : peterparker@mail.com
age : 18

TỔNG KẾT

Như vậy là bạn đã biết cách hoạt động của vòng lặp trong PHP. Cũng đơn giản thôi phải không nào?

Bài tới chúng ta sẽ học về hàm trong PHP. Bắt đầu đến những phần khó hơn. Hãy chăm chỉ ôn tập lại bài đã học bạn nhé.

Bài 12: Array (Mảng) trong PHP

Bài học này bạn sẽ học được cách sử dụng mảng trong PHP. Hiểu về mảng chỉ mục, mảng liên kết, mảng đa chiều và cách xem cấu trúc, dữ liệu của nó

Bài học này bạn sẽ học được cách sử dụng mảng trong PHP. Hiểu về mảng chỉ mục, mảng liên kết, mảng đa chiều và cách xem cấu trúc, dữ liệu của nó

1. Array (Mảng) trong PHP là gì?

Mảng là các biến phức tạp cho phép chúng ta lưu trữ nhiều hơn một giá trị hoặc một nhóm các giá trị dưới một tên biến duy nhất.

Giả sử bạn muốn lưu trữ màu sắc trong tập lệnh PHP của mình. Lưu trữ từng màu một trong một biến có thể trông giống như thế này:

<?php
$color1 = "Red";
$color2 = "Green";
$color3 = "Blue";
?>

Nhưng nếu bạn muốn lưu hàng trăm loại màu, hằng trăm thành phố, hàng trăm nhãn hiệu. Chả nhẽ lại tạo từng biến và gán giá trị cho nó?

Như vậy thì quá thủ công và không thông minh.

Thậm chí nó còn làm tốn bộ nhớ và tài nguyên.

Do đó, giải pháp là đẩy tất cả vào một mảng, đặt tên mảng và đánh số thứ tự cho nó là OK.

Các loại mảng có trong PHP:

Có ba loại mảng mà bạn có thể tạo. Đó là:

  • Indexed Array – Một mảng có number key.
  • Associative array (Mảng kết hợp) – Một mảng trong đó có key và value riêng
  • Multidimensional array (Mảng đa chiều) – Một mảng chứa một hoặc nhiều mảng trong chính nó.

2. Indexed Array trong PHP

Một mảng được lập chỉ mục hoặc số lưu trữ từng phần tử mảng với một chỉ mục.

Các ví dụ sau đây cho thấy hai cách tạo một mảng được lập chỉ mục, cách dễ nhất là:

<?php
// Define an indexed array
$colors = array("Red", "Green", "Blue");
?>
Lưu ý: Trong một mảng được lập chỉ mục hoặc số, các chỉ mục được tự động gán và bắt đầu bằng 0 và các giá trị có thể là bất kỳ loại dữ liệu nào.

Cạch viết trên tương đương với ví dụ sau, trong đó các chỉ mục được gán thủ công:

<?php
$colors[0] = "Red"; 
$colors[1] = "Green"; 
$colors[2] = "Blue"; 
?>

Trong lập trình. Vị trí đầu tiên bắt đầu từ số 0, nên giá trị đầu tiên trong mảng sẽ có index là 0.

3. Associative Arrays (Mảng kết hợp) trong PHP

Trong một mảng kết hợp, các key được gán cho các giá trị có thể là các chuỗi tùy ý và do người dùng xác định.

Trong ví dụ sau, mảng sử dụng các key thay vì chỉ mục số:

<?php
// Define an associative array
$ages = array("Peter"=>22, "Clark"=>32, "John"=>28);
?>

Ví dụ sau tương đương với ví dụ trước, nhưng cho thấy một cách khác để tạo mảng kết hợp:

<?php
$ages["Peter"] = "22";
$ages["Clark"] = "32";
$ages["John"] = "28";
?>

Như các bạn thấy, thay vì đánh chỉ mục dạng số thì chúng ta có thể đặt key cho nó luôn.

4. Multidimensional Arrays (Mảng đa chiều) trong PHP

Mảng đa chiều là một mảng trong đó mỗi phần tử cũng có thể là một mảng và mỗi phần tử trong mảng con có thể là một mảng hoặc tiếp tục chứa mảng trong chính nó, v.v.

Một ví dụ về mảng đa chiều sẽ trông giống như thế này:

<?php
// Define a multidimensional array
$contacts = array(
    array(
        "name" => "Peter Parker",
        "email" => "peterparker@mail.com",
    ),
    array(
        "name" => "Clark Kent",
        "email" => "clarkkent@mail.com",
    ),
    array(
        "name" => "Harry Potter",
        "email" => "harrypotter@mail.com",
    )
);
// Access nested value
echo "Peter Parker's Email-id is: " . $contacts[0]["email"];
?>

Ở đây bạn có thể thấy, trong mảng $contacts có chứa 3 mảng con kết hợp có key và value riêng.

5. Cách xem cấu trúc và giá trị mảng trong PHP

Bạn có thể thấy cấu trúc và giá trị của bất kỳ mảng nào bằng cách sử dụng một trong hai câu lệnh:

  • var_dump()
  • print_r()

Tuy nhiên, nếu bạn sử dụng câu lệnh print_r() thì sẽ nhận được ít thông tin hơn về mảng. Hãy xem xét ví dụ sau:

<?php
// Define array
$cities = array("London", "Paris", "New York");
 
// Display the cities array
print_r($cities);
?>

Câu lệnh print_r() sẽ đưa ra kết quả như sau:

Array ( [0] => London [1] => Paris [2] => New York )

Đầu ra này chỉ hiển thị key và value cho từng phần tử trong mảng. Để có thêm thông tin, sử dụng hàm var_dump() như sau:

<?php
// Define array
$cities = array("London", "Paris", "New York");
 
// Display the cities array
var_dump($cities);
?>

Câu lệnh var_dump() này cho output như sau:

array(3) { [0]=> string(6) "London" [1]=> string(5) "Paris" [2]=> string(8) "New York" }

Kết quả này không chỉ hiển thị key và value mà còn hiển thị loại dữ liệu của từng thành phần, chẳng hạn như:

  • Key: 0
  • Value: London
  • Type: string
  • 6 ký tự

TỔNG KẾT

Như vậy là các bạn đã tìm hiểu về mảng và các loại mảng trong PHP. Biết cách khai báo một mảng và xem cấu trúc và giá trị của mảng.

Bài tới chúng ta sẽ học về cách sắp xếp mảng trong PHP. Bạn cũng sẽ được học cách lặp qua các giá trị của mảng ở các bài học tiếp theo.

Bài 11: Cách sử dụng câu lệnh điều khiển Switch…Case trong PHP

Trong bài học này, bạn sẽ tìm hiểu cách sử dụng câu lệnh Swicth…Case để kiểm tra hoặc đánh giá một biểu thức với các giá trị khác nhau trong PHP.

Trong bài học này, bạn sẽ tìm hiểu cách sử dụng câu lệnh Swicth…Case để kiểm tra hoặc đánh giá một biểu thức với các giá trị khác nhau trong PHP.

Sự khác nhau của If…Else và Switch…Case trong PHP

Câu lệnh Switch..Case là một thay thế cho câu lệnh if-elseif-else, nó gần như tương tự nhau.

Câu lệnh Switch…Case kiểm tra một biến đối với một loạt các giá trị cho đến khi tìm thấy khớp, và sau đó thực thi khối mã tương ứng với khớp đó.

switch(n){
    case label1:
        // Code thực thi nếu n=label1
        break;
    case label2:
        // Code thực thi nếu if n=label2
        break;
    ...
    default:
        // Code thực thi nếu n không thuộc tình huống nào đưa ra.
}

Hãy thử xem ví dụ bên dưới, hiển thị một thông báo khác nhau cho mỗi ngày:

<?php
$today = date("D");
switch($today){
    case "Mon":
        echo "Hôm nay là Thứ Hai. Lau dọn Nhà đi.";
        break;
    case "Tue":
        echo "Hôm nay là thứ Ba. Hãy đi siêu thị mua đồ ăn.";
        break;
    case "Wed":
        echo "Hôm nay là thứ Tư. Đi ngủ sớm.";
        break;
    case "Thu":
        echo "Hôm nay là thứ Năm. Rửa xe đi nhé.";
        break;
    case "Fri":
        echo "Hôm nay là thứ Sáu. Nấu một bữa ngon nào!.";
        break;
    case "Sat":
        echo "Hôm nay là thứ Bảy. Hãy xem một bộ phim.";
        break;
    case "Sun":
        echo "Hôm nay là Chủ Nhật. Ra ngoài đi dạo đi.";
        break;
    default:
        echo "Không có thông báo nào cho bạn";
        break;
}
?>

Câu lệnh switch…case khác với câu lệnh if…elseif…else như thế này:

Câu lệnh switch thực thi từng dòng (tức là thực thi từng câu lệnh một) và một khi PHP tìm thấy một câu lệnh tình huống đánh giá là đúng, nó không chỉ thực thi code tương ứng với câu lệnh tình huống đó, mà còn thực thi tất cả các câu lệnh tình huống tiếp theo cho đến hết.

Để ngăn chặn điều này, thêm một câu lệnh break vào cuối mỗi khối trường hợp. Câu lệnh break bảo PHP thoát ra khỏi khối câu lệnh switch…case sau khi nó thực thi đoạn mã có điều kiện đúng đầu tiên.

Bài 10: Cách sử dụng câu lệnh điều kiện IF, Else, Elseif trong Lập trình PHP

Trong bài học này chúng ta sẽ học cách sử dụng câu lệnh điều kiện if, if…else, if…elseif…else (Conditional Statements) để thực hiện các hành động trong lập trình nói chung và Lập trình PHP nói riêng.

Trong bài học này chúng ta sẽ học cách sử dụng câu lệnh điều kiện if, if…else, if…elseif…else (Conditional Statements) để thực hiện các hành động trong lập trình nói chung và Lập trình PHP nói riêng.

Các loại câu lệnh điều kiện trong lập trình PHP

Giống như hầu hết các ngôn ngữ lập trình, PHP cũng cho phép bạn viết mã thực hiện các hành động khác nhau dựa trên kết quả của một điều kiện kiểm tra logic hoặc so sánh trong thời gian chạy.

Điều này có nghĩa là: Bạn có thể tạo các điều kiện kiểm tra dưới dạng biểu thức đánh giá là True (Đúng) hoặc False (Sai) và dựa trên các kết quả này, bạn có thể thực hiện một số hành động nhất định nào đó.

Ví dụ: Nếu giá trị của a lớn hơn giá trị của b thì thực hiện a – b. Nếu không thì thực hiện a + b.

Một số câu lệnh điều kiện bạn có thể sử dụng:

  • Câu lệnh if
  • Câu lệnh if…else
  • Câu lệnh if…elseif…else
  • Câu lệnh switch…case

Chúng ta sẽ tìm hiểu cách sử dụng các câu lệnh điều kiện này trong những phần dưới đây:

1. Cách sử dụng câu lệnh điều kiện if trong PHP

Câu lệnh if được sử dụng để thực thi một khối mã chỉ khi điều kiện được chỉ định đánh giá là True.

Đây là câu lệnh điều kiện đơn giản nhất của PHP và có thể được viết như sau:

if(điều kiện){
    // Code thực thi ở đây
}

VD: Xuất ra lời chúc “Chúc cuối tuần vui vẻ!” nếu ngày hôm nay là thứ 6:

<?php
$d = date("D");
if($d == "Fri"){
    echo "Chúc cuối tuần vui vẻ!";
}
?>

2. Cách sử dụng câu lệnh điều kiện if…else trong PHP

Bạn có thể ra quyết định tốt hơn bằng cách cung cấp lựa chọn thay thế nếu điều kiện bị sai.

Câu lệnh if … else sẽ cho phép bạn thực thi một khối mã nếu:

  • Điều kiện được chỉ định được ước tính là True
  • Thực hiện một khối mã khác nếu điều kiện đó được ước tính là False.

Câu lệnh if else có thể được viết, như thế này:

if(điều kiện){
    // Code thực thi nếu điều kiện đúng
} else{
    // Code thực thi nếu điều kiện sai
}

Ví dụ sau sẽ xuất ra ‘Chúc cuối tuần vui vẻ!’ nếu ngày hôm nay là thứ 6, nếu không nó sẽ xuất ra ‘Chúc một ngày tốt lành!’

<?php
$d = date("D");
if($d == "Fri"){
    echo "Chúc cuối tuần vui vẻ!";
} else{
    echo "Chúc một ngày tốt lành!";
}
?>

3. Cách sử dụng câu lệnh if…elseif…else trong PHP

Câu lệnh if…elseif…else là một câu lệnh đặc biệt được sử dụng để kết hợp nhiều câu lệnh if … khác nhau.

if(điều kiện 1){
    // Code thực thi nếu điều kiện 1 True
} elseif(điều kiện 2){
    // Code thực thi nếu điều kiện 1 False và điều kiện 2 True
} else{
    // Code thực thi nếu cả điều kiện 1 và điề kiện 2 đều sai
}

Ví dụ sau sẽ xuất ra:

  • ‘Chúc cuối tuần vui vẻ!’ nếu ngày hiện tại là thứ Sáu
  • ‘Chúc chủ nhật vui vẻ!’ nếu ngày hiện tại là Chủ nhật
  • Nếu không nó sẽ xuất ra ‘Chúc một ngày tốt lành!’
<?php
$d = date("D");
if($d == "Fri"){
    echo "Chúc cuối tuần vui vẻ!";
} elseif($d == "Sun"){
    echo "Chúc chủ nhật vui vẻ!";
} else{
    echo "Chúc một ngày tốt lành!";
}
?>

Ok. vậy là bạn đã biết 3 loại câu lệnh có điều kiện trong PHP. Phần Switch…case thì chúng ta sẽ học trong bài với. Hôm nay như vậy là đủ rồi.

BONUS: Toán tử Terary

Toán tử ternary cung cấp một cách viết nhanh, ngắn gọn hơn của câu lệnh if…else.

Toán tử ternary được biểu thị bằng ký hiệu dấu hỏi “?” Và 3 toán hạng sau nó:

  • 1 biểu thức điều kiện
  • 1 kết quả nếu biểu thức điều kiện True
  • 1 kết quả nếu biểu thức điều kiện False

Để hiểu cách thức hoạt động của toán tử này, hãy xem xét các ví dụ sau:

<?php
if($age < 18){
    echo 'Còn được bố mẹ nuôi'; // Tuổi vẫn còn nhỏ hơn 18
} else{
    echo 'Tự làm mà kiếm ăn'; // Tuổi đã bằng hoặc lớn hơn 18. Tự kiếm ăn đi
}
?>

Nếu chúng ta sử dụng toán tử ternary, đoạn mã tương tự có thể được viết theo cách gọn hơn.

<?php echo ($age < 18) ? 'Còn được bố mẹ nuôi' : 'Tự làm mà kiếm ăn đi'; ?>

Toán tử ternary trong ví dụ trên:

  • Nếu $age nhỏ hơn 18 thì: Chọn giá trị ở bên trái dấu hai chấm
  • Nếu $age lớn hơn hoặc bằng 18 thì: Chọn giá trị ở bên phải dấu hai chấm

Viết bằng toán tử Ternary thì có thể khó đọc nhưng nếu cần tối ưu code thì cách viết này hiệu quả hơn. Còn bạn mới bắt đầu thì cứ viết hẳn ra để còn dễ đọc lại code.

BONUS: Toán tử hợp nhất trong PHP 7

PHP 7 giới thiệu một toán tử Null Coalescing (??).

Bạn có thể sử dụng như một viết ngắn gọn nếu bạn cần sử dụng một toán tử ternary kết hợp với hàm (function) isset().

Để hiểu rõ điều này theo cách tốt hơn hãy xem xét dòng mã sau đây.

Nó lấy giá trị của $_GET [‘name’]. Còn nếu nó không tồn tại hoặc NULL, nó sẽ trả về ‘
anonymous’.

<?php
$name = isset($_GET['name']) ? $_GET['name'] : 'anonymous';
?>

Thay vì như vậy. Để tối ưu code. Chúng ta có thể sử dụng toán tử Null Coalescing “??” như sau:

<?php
$name = $_GET['name'] ?? 'anonymous';
?>

Như bạn có thể thấy cú pháp sau này nhỏ gọn hơn và dễ viết hơn. Và cũng tối ưu hơn.

Thay vì phải kiểm tra điều kiện tồn tại hay không thì chúng ta thực hiện việc lấy luôn giá trị. Nếu nó không tồn tại hoặc NULL thì trả về “anonymous”. Thế thôi.

Tổng kết

Như vậy là bạn đã biết cách sử dụng toán tử if, if…else, if…elseif…else trong lập trình PHP.

Bạn cũng biết cách viết ngắn gọn câu lệnh điều kiện bằng cách sử dụng toán tử Ternary “?” và toán tử Null Coalescing “??” trong PHP.

Bài tới chúng ta sẽ tìm hiểu sâu về câu lệnh Switch…case.