PHP và những điều cơ bản (phần 2)

PHP và những điều cơ bản (phần 2)

Tiếp nối bài PHP và những điều cơ bản lần trước, bài này mình sẽ tiếp tục giới thiệu về những kiến thức cơ bản nhất trong PHP bao gồm vòng lặp, Array, function.

Các vòng lặp trong Php - Loop

Các vòng lặp được sử dụng nhằm mục đích thực hiện khối lệnh nào đó nhiều lần. Một số loại vòng lặp trong PHP:
  • for
  • while
  • do ... while
  • foreach

trong vòng lặp, breakcontinue thường được sử dụng để điều hướng vòng lặp.

1. Vòng lặp for

Thường sử dụng khi đã biết rõ số lần cần lặp.
Cú pháp vòng lặp for:

for (khởi_tạo; điều_kiện; tăng_giảm)
{
    Code thi hành;
}

Ví dụ trong ví dụ lặp lại khối lệnh 10 lần ta thấy
khởi_tạo giá trị của $i là 1
điều_kiện là khi $i <= 10
và để kết thúc vòng lặp thì mỗi lần lặp tăng giá trị của $i lên 1 đơn vị.

<?php
    for ($i = 1; $i<=10; $i++) {
        echo "Vòng lặp thứ $i <br>";
    }
?>

2. Vòng lặp while

Với while thì bạn không cần biết số lần khối lệnh thi hành, mà khối lệnh sẽ thi hành khi mà điều_kiện còn đúng - true. Cú pháp while:

while (điều_kiện là true) {
    khối lệnh thi hành;
}

Trong ví dụ:

<?php
    $i = 1;
    while ($i < 5) {
        echo "Giá trị là $i <br />";
        $i++;
    }
?>

thì khối lệnh vẫn được thực hiện chừng nào điều kiện $i < 5 còn đúng.

3. Vòng lặp do while

Với do ... while, khối lệnh sẽ thi hành ngay rồi kiểm tra điều kiện, nếu điều kiện đúng thì lại lặp lại khối lệnh. Cú pháp:

do {
    khối lệnh thi hành;
} while (điều_kiện);

Trong ví dụ in ra màn hình giá trị của $irồi tăng $i thêm 1 đơn vị. Sau đó, kiểm tra điều kiện đúng ($i <= 5) thì lặp lại.

<?php
    $i = 0;
    do {
        echo "Số là " . $i . "<br/>";
        $i++;
    } while($i <= 5);
?>

4. Vòng lặp foreach

Vòng lặp này chỉ hoạt động dựa trên array và object.

Cú pháp 1 - chỉ lấy value khi duyệt qua mảng:

foreach (array as $value) {
    code_thực_hiện;
}

Cú pháp 2:

foreach (array as $key => $value) {
    code_thực_hiện;
}

Ví dụ in ra giá trị các phần tử của mảng:

<?php
    $tests = array("TEST1", "TEST2", "TEST3", "TEST4", "TEST5");
    foreach ($tests as $test) {
        echo $test.'<br />';
    }
?>

5. Break và Continue

break; được sử dụng để thoát ra khỏi vòng lặp.

continue; được sử dụng để bỏ qua vòng hiện tại và bắt đầu vòng lặp mới.

<?php
    for ($i=0; $i<=8; $i++)  {
        if ($i == 2) {
            continue;
        }

        if ($i == 5) {
            break;
        }
        echo "Number: $i<br>";
    }
?>

Kết quả sẽ là:

Trong vòng lặp chạy từ 0 đến 8, gặp $i là 2 thì sẽ thực hiện vòng lặp với $i là 3 và không thực hiện các lệnh phía sau đó. Khi $i là 5 thì break sẽ thoát khỏi hoàn toàn vòng lặp.

Array

Array - Mảng là một loại dữ liệu đặc biệt chứa nhiều giá trị trong 1 biến.

Mảng cơ bản trong PHP

Mảng rỗng là mảng có dạng

$array1 = array();
$array2 = [];

Mảng dạng số là mảng mà mỗi phần tử của nó có một chỉ số là số nguyên.

<?php
    $cars = ["BMW", "Mercedes", "Toyota"];    // khởi tạo mảng $name, đưa vào nó 3 phần tử
    var_export($cars);                       // export biến mảng
?>

Kết quả sẽ là:
array (
    0 => 'BMW',
    1 => 'Mercedes',
    2 => 'Toyota'
)

Cách truy xuất và thêm giá trị vào array

<?php
    $ten = $cars[2];                // trả về Toyota
    $cars[1] = 'Ford';              // phần  tử chỉ số 1 gán giá trị mới
    $cars[] = 'volkswagen';         // thêm vào cuối phần tử mới, chỉ số phần tử này bằng chỉ số lớn nhất cộng 1
?>

Mảng kết hợp hay Associative Arrays là mảng mà tên chỉ số là một giá trị nào đó do bạn gán vào, có thể là một string hay một số ...
Ví dụ:

<?php
    $weekdays  =  [
        'Mon' => "Monday",
        'Tue' => "Tuesday",
        'Wed' => "Wednesday",
        'Thu' => "Thusday",
        'Fri' => "Friday",
    ];
    foreach ($weekdays as $key => $value)
        echo "$key ($value) <br>"; 
?>

Mảng nhiều chiều hay Multidimensional Array là mảng trong nó chứa một hay nhiều mảng khác. Số chiều của mảng tương ứng với cặp [] để chọn phần tử mảng.

  • Mảng một chiều: [chỉ-số]
  • Mảng hai chiều: [chỉ-số-1][chỉ-số-2]
  • Mảng ba chiều: [chỉ-số-1][chỉ-số-2][chỉ-số-3]
<?php
    $diem = [
        'Ha' => [
            'Toan' => 8,
            'Ly' => 7,
            'Hoa'  => 9
        ],
        'Huy' => [
            'Toan' => 7,
            'Ly' => 8,
            'Hoa'  => 8
        ],
        'Hung' => [
            'Toan' => 9,
            'Ly' => 9,
            'Hoa'  => 9
        ],
    ];

    foreach ($diem as $ten => $cacdiem) {
        echo $ten, PHP_EOL;
        foreach ($cacdiem as $monhoc => $d)
            echo "  $monhoc: $d", PHP_EOL;

    }
?>
      
Kết quả hiển thị ra
    Ha
      Toan: 8
      Ly: 7
      Hoa: 9
    Huy
      Toan: 7
      Ly: 8
      Hoa: 8
    Hung
      Toan: 9
      Ly: 9
      Hoa: 9 

Hay lấy điểm 1 môn của 1 thành viên:
<?php
    echo $diem['Huy']['Hoa'];  // 8
?>

Một số hàm xử lý mảng thường sử dụng:
    <tr>
        <td><code>array_merge()</code></td>
        <td>Gộp hai mảng thành một mảng mới (giá trị)</td>
    </tr>

    <tr>
        <td><code>array_pop($ar)</code></td>
        <td>Xóa phần tử cuối và trả về giá trị của phần tử đó</td>
    </tr>
    <tr>
        <td><code>array_product()</code></td>
        <td>Tính toán tích số của mảng (mảng rỗng tích số là 1)</td>
    </tr>
    <tr>
        <td><code>array_push()</code></td>
        <td>Chèn một hoặc nhiều phần tử vào phần cuối của một mảng</td>
    </tr>
    <tr>
        <td><code>array_reverse()</code></td>
        <td>Trả về một mảng với thứ tự bị đảo ngược</td>
    </tr>
    <tr>
        <td><code>array_search()</code></td>
        <td>Tìm kiếm theo giá trị phần tử, trả về mảng chứa kết quả tìm kiếm</td>
    </tr>
    <tr>
        <td><code>array_shift()</code></td>
        <td>Xóa bỏ phần tử đầu tiên khỏi mảng, trả về giá trị phần tử đó</td>
    </tr>
    <tr>
        <td><code>array_unique()</code></td>
        <td>Tạo một mảng mới từ mảng gốc, đảm bảo mỗi phần tử của mảng là khác nhau (những phần tử mảng
            gốc có giá trị giống nhau thì chỉ sao chép một lần)</td>
    </tr>

    <tr>
        <td><code>in_array()</code></td>
        <td>Kiểm tra xem một giá trị có trong phần tử mảng</td>
    </tr>

    <tr>
        <td><code>shuffle()</code></td>
        <td>Làm lộn xộn ngẫu nhiên thứ tự các phần tử trong mảng</td>
    </tr>

    <tr>
        <td><code>sort()</code></td>
        <td>Sắp xếp một mảng</td>
    </tr>

    <tr>
        <td><code>count($array)</code></td>
        <td>Đếm số phần tử của mảng</td>
    </tr>
</tbody>
Hàm Mô tả
array_filter() Trả về mảng, lọc các phần tử bởi hàm callback
array_key_exists() Kiểm tra index $key có tồn tại (trả về true) trong mảng $a array_key_exists($key, $a)
array_keys() Trả về mảng chứa các key của mảng gốc

Function

**Hàm hay function** là một khối chứa các câu lệnh với mục đích sử dụng khối này nhiều lần trong chương trình.

Hàm do bạn tự định nghĩa có dạng như sau:

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

functionName là tên hàm, về quy ước đặt tên sẽ được giới thiệu trong bài về tiêu chuẩn psr-2. Để gọi hàm:

<?php
    function sayHello() {
        echo "Hello World!";
    }
    
    sayHello(); //gọi hàm
    
    //Outputs "Hello World!"
?>

Tham số của hàm và tham số mặc định của tham số

Các thông tin chuyển tới cho hàm thông qua tham số của hàm, chúng có vai trò như là biến.
Các tham số mặc định có thể xác định giá trị cho tham số của hàm. Hàm sau đây, truyền vào tham số $name, khi gọi không truyền tham số vào hàm, do vậy, khi hàm thi hành nó sẽ lấy giá trị mặc định làm giá trị đối số.

<?php
    function setName($name = 'noname') {
        echo "Name is ".$name;
    }

    setName('PHP');  //Name is PHP
    setName();       //Name is noname

?>

Giá trị trả về của hàm

Một hàm có thể trả về một giá trị bằng câu lệnh return $value;. Trong hàm nếu gặp return hàm sẽ dừng thi hành và gửi giá trị trả về cho nơi gọi hàm.

<?php
    function multiplication($num1, $num2) {
        $result = $num1 * $num2;
        return $result;
    }

    echo multiplication(3,4);
    // Kết quả in ra: 12
?>

Tổng kết

Như vậy trong 2 phần `PHP và những điều cơ bản`, mình đã giới thiệu tới các bạn những kiến thức cơ bản nhất để bắt đầu lập trình PHP. Trong phần tiếp theo mình sẽ đề cập đến phần `Xử lý form`. ([Link phần tiếp theo tham khảo tại đây.](https://blog.haposoft.com/xu-ly-form-trong-php))