Mảng (Array) và các hàm xử lý mảng trong PHP

mảng trong PHP

Trong lĩnh vực IT, kiến thức của chúng ta đôi khi chỉ là giọt nước giữa đại dương mênh mông. Hôm nay, SmartOSC Careers sẽ giới thiệu về phần kiến thức: Mảng trong PHP.

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

Một mảng là một cấu trúc dữ liệu lưu trữ một tập hợp các giá trị cùng kiểu dữ liệu trong vùng nhớ liên tục. Tương tự như việc sắp xếp các ô đậu xe trong một bãi đỗ, mỗi ô đậu xe tương đương với một phần tử trong mảng, chứa một giá trị cụ thể (value)  và được đánh chỉ số để xác định vị trí của nó (key)

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

Cú pháp

Để tạo mảng trong PHP, chúng ta có thể sử dụng hàm array() hoặc viết giá trị trực tiếp trong cặp dấu [ ] (Từ PHP 5.4 trở lên).

array(

    key  => value,

    key2 => value2,

    

)

Ví dụ:

<?php

    $cars=array(“Volvo”,“BMW”,“Toyota”);

    var_dump( $cars );

?>

Kết quả bạn có như sau:

array(3) {

    [0]=> string(5) “Volvo”

    [1]=> string(3) “BMW”

    [2]=> string(6) “Toyota”

}

Ví dụ trên cho thấy mảng $cars có 3 giá trị, mỗi giá trị được gán một key từ 0 đến 2. Khi dump ra, mỗi giá trị sẽ được hiển thị kèm theo kiểu dữ liệu của nó. Do đó, Volvo, BMW và Toyota là các giá trị trong mảng $cars. Các key sẽ được tự động gán khi khởi tạo mảng. Để lấy giá trị trong mảng theo ý muốn, chúng ta có thể viết tên biến kèm theo key cần lấy giá trị. Ví dụ, để lấy giá trị đầu tiên của mảng, ta viết $cars[0]. Để lấy giá trị thứ hai, ta viết $cars[1]. Tương tự, để lấy giá trị thứ ba, ta viết $cars[2].

<?php

    echo $cars[2];

?>

Các loại mảng

Mảng số nguyên

Một mảng có chỉ mục dạng số. Giá trị được lưu trữ và truy cập một cách tuyến tính. VD:

<?php

    $numbers = array( 1, 2, 3, 4, 5);

    foreach( $numbers as $value )

    {

        echo “Giá trị phần tử mảng là $value;

    }

    /* Phương thức thứ hai để tạo mảng trong PHP. */

    $numbers[0] = “Volvo”;

    $numbers[1] = “BMW”;

    $numbers[2] = “Toyota”;

    $numbers[3] = “Mazda”;

    $numbers[4] = “Kia”;

    foreach( $numbers as $value )

    {

        echo “Giá trị phần tử mảng là $value;

    }  

?>

Kết quả

    Giá trị phần tử mảng là 1 

    Giá trị phần tử mảng là 2 

    Giá trị phần tử mảng là 3 

    Giá trị phần tử mảng là 4 

    Giá trị phần tử mảng là 5 

    Giá trị phần tử mảng là Volvo 

    Giá trị phần tử mảng là BMW 

    Giá trị phần tử mảng là Toyota 

    Giá trị phần tử mảng là Mazda 

    Giá trị phần tử mảng là Kia

Mảng số nguyên
Mảng số nguyên là một mảng trong PHP

Mảng liên hợp

Mảng liên hợp là một loại mảng có chỉ mục là chuỗi ký tự. Khác với mảng số nguyên, các phần tử của mảng liên hợp không được lưu trữ theo thứ tự chỉ mục tuyến tính. Thay vào đó, chúng được lưu trữ theo cặp key-value, trong đó key là chỉ mục và value là giá trị của phần tử.

Mảng liên hợp có nhiều điểm tương đồng với mảng số nguyên, chẳng hạn như khả năng truy cập, thêm, xóa, sắp xếp,… Tuy nhiên, điểm khác biệt chính của mảng liên hợp là chỉ mục của nó. Chỉ mục dạng chuỗi cho phép người dùng thiết lập một liên kết mạnh giữa key và value, giúp cho việc truy cập và xử lý dữ liệu trong mảng trở nên dễ dàng và hiệu quả hơn. Ví dụ: 

<?php   

     /* Phương thức thứ nhất để tạo mảng liên hợp. */

     $dong_xe = array(“volvo” => 3, “bmw” => 2, “toyota” => 1);

 

     echo “Mức độ phổ biến của Volvo là “. $dong_xe[‘volvo’]. “”;

     echo “Mức độ phổ biến của BMW là “.  $dong_xe[‘bmw’]. “”;

     echo “Mức độ phổ biến của Toyota là “.  $dong_xe[‘toyota’]. “”;

 

     /* Phương thức thứ hai để tạo mảng liên hợp. */

     $dong_xe[‘volvo’] = “low”;

     $dong_xe[‘bmw’] = “medium”;

     $dong_xe[‘toyota’] = “high”;

 

     echo “Mức độ phổ biến của Volvo là “. $dong_xe[‘volvo’] . “”;

     echo “Mức độ phổ biến của BMW là “.  $dong_xe[‘bmw’]. “”;

     echo “Mức độ phổ biến của Toyota là “.  $dong_xe[‘toyota’]. “”;

?>

Kết quả: 

    Mức độ phổ biến của Volvo là 3

    Mức độ phổ biến của BMW là 2

    Mức độ phổ biến của Toyota là 1

    Mức độ phổ biến của Volvo là low

    Mức độ phổ biến của BMW là medium

    Mức độ phổ biến của Toyota là high

Mảng đa chiều

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

<?php

    $diemdanhgia = array

    “volvo” => array

    (

        “mausac” => 7,

        “kieudang” => 8,  

        “tocdo” => 9

    ),

 

    “bmw” => array

    (

        “mausac” => 7,

        “kieudang” => 9,

        “tocdo” => 6

    ),

 

    “toyota” => array

    (

        “mausac” => 8,

        “kieudang” => 8,

        “tocdo” => 9

    )

);

 

    /* truy cập các giá trị của mảng đa chiều */

    echo “Điểm đánh giá màu sắc của Volvo là: “ ;

    echo $diemdanhgia[‘volvo’][‘mausac’] . “”

 

    echo “Điểm đánh giá kiểu dáng của BMW là: “;

    echo $diemdanhgia[‘bmw’][‘kieudang’] . “”

 

    echo “Điểm đánh giá tốc độ của Toyotalà: “ ;

    echo $diemdanhgia[‘toyota’][‘tocdo’] . “”;

?>

 

Kết quả

    Điểm đánh giá màu sắc của Volvo là: 7

    Điểm đánh giá kiểu dáng của BMW là: 9

    Điểm đánh giá tốc độ của Toyotalà: 9

Phép lặp trong mảng

Phép lặp mảng tuần tự

Cú pháp:

foreach($array as $temp)

    { Hành Động }

Trong đó $array là một mảng mà chúng ta muốn lặp qua, và $temp là một biến được sử dụng để tạm thời lưu trữ mỗi phần tử trong quá trình lặp. Ví dụ:

<?php

    $cars= array(“Volvo”, “BMW”, “Toyota”);

    foreach ($cars as $car){ 

        echo $car

    }

?>

Phép lặp mảng tuần tự

Cú pháp:

foreach($array as $temp)

    { Hành Động }

Ở đây, $array là mảng mà chúng ta muốn lặp qua, và $temp là một biến sẽ được sử dụng để tạm thời lưu trữ mỗi phần tử.

 

<?php

    $cars= array(“Volvo”, “BMW”, “Toyota”);

    foreach ($cars as $car){ 

        echo $car

    }

?>

Phép lặp qua một mảng kết hợp

Cú pháp:

foreach($array as $key=>$value)

{ Hành Động }

Trong vòng lặp, biến $array chứa mảng cần lặp, biến $key chứa khóa của mỗi phần tử trong mảng, và biến $value chứa giá trị của mỗi phần tử trong mảng. Ví dụ:

<?php

    $car= array( “ten”   =>“Volvo”

                 “tocdo”    =>“230”

                 “kieudang”  =>“co_dien”

                 “mausac”    =>“nau_xam”);

    foreach($car as $key=>$val){

        echo “Key: $key. Gia Tri: $val;

    }

?>

Phép lặp qua một mảng kết hợp
Phép lặp qua một mảng kết hợp

Các hàm xử lý mảng trong PHP

  • array(): Tạo 1 mảng
  • array_change_key_case(): Trả về 1 mảng với tất cả key trong dạng chữ thường hoặc chữ hoa
  • array_chunk(): Chia 1 mảng thành các mảng con
  • array_combine(): Tạo mảng mới bằng cách sử dụng key từ một mảng và value từ một mảng khác.
  • array_count_values(): Đếm số lần xuất hiện của các giá trị trong mảng và trả về một mảng mới
  • array_diff(): So sánh sự khác nhau các value trong mảng
  • array_diff_assoc(): So sánh sự khác nhau các key và value trong mảng
  • array_diff_key(): So sánh sự khác nhau các key trong mảng
  • array_diff_uassoc(): Trả về các phần tử trong mảng đầu tiên không có trong các mảng khác, so sánh cả giá trị và key bằng hàm callback
  • array_diff_ukey(): Trả về các phần tử trong mảng đầu tiên không có trong các mảng khác, so sánh key bằng hàm callback
  • array_fill(): Điền value vào 1 mảng
  • array_fill_keys(): Điền value vào 1 mảng, chỉ rõ key
  • array_filter(): Lọc các phần tử thỏa mãn điều kiện trong hàm callback
  • array_flip(): Đảo ngược key và value của mảng
  • array_intersect(): Trả về các phần tử chung của các mảng
  • array_intersect_assoc(): Trả về các phần tử chung của các mảng, so sánh cả giá trị và key
  • array_intersect_key(): Trả về các phần tử có key trùng nhau trong các mảng
  • array_intersect_uassoc(): Trả về các phần tử có key trùng nhau trong các mảng, so sánh cả giá trị và key bằng hàm callback
  • array_intersect_ukey(): Trả về các phần tử có key trùng nhau trong các mảng, so sánh key bằng hàm callback
  • array_key_exists(): Kiểm tra xem key có tồn tại trong mảng hay không
  • array_keys(): Trả về mảng các key
  • array_map(): Áp dụng hàm callback cho từng phần tử của mảng và trả về mảng mới
  • array_merge(): Gộp nhiều mảng thành một, ghi đè key nếu trùng.
  • array_merge_recursive(): Gộp mảng lồng nhau, tạo mảng con nếu key trùng
  • array_multisort(): Sắp xếp nhiều mảng cùng lúc theo các tiêu chí khác nhau
  • array_pad(): Thêm phần tử đệm vào mảng
  • array_pop(): Xóa và trả về phần tử cuối mảng
  • array_product(): Tính tích các giá trị trong mảng
  • array_push(): Thêm phần tử vào cuối mảng
  • array_rand(): Chọn ngẫu nhiên các phần tử
  • array_reduce(): Áp dụng hàm callback lên từng phần tử để tạo giá trị mới
  • array_reverse(): Đảo ngược thứ tự mảng
  • array_search(): Tìm kiếm giá trị và trả về key đầu tiên
  • array_shift(): Xóa và trả về phần tử đầu mảng
  • array_slice(): Trích xuất một phần của mảng.
  • array_splice(): Xóa và thay thế một phần của mảng.
  • array_sum(): Tính tổng các giá trị trong mảng
  • array_udiff(): Trả về các phần tử trong mảng đầu tiên không có trong các mảng khác, so sánh giá trị bằng hàm callback
  • array_udiff_assoc(): Trả về các phần tử trong mảng đầu tiên không có trong các mảng khác, so sánh cả giá trị và key bằng hàm callback
  • array_udiff_uassoc(): Trả về các phần tử trong mảng đầu tiên không có trong các mảng khác, so sánh giá trị và key bằng các hàm callback khác nhau.
  • array_uintersect(): Trả về các phần tử chung của các mảng, so sánh giá trị bằng hàm callback
  • array_uintersect_assoc(): Trả về các phần tử chung của các mảng, so sánh cả giá trị và key bằng hàm callback
  • array_uintersect_uassoc(): Trả về các phần tử chung của các mảng, so sánh giá trị và key bằng các hàm callback khác nhau
  • array_unique(): Loại bỏ các giá trị trùng lặp
  • array_unshift(): Thêm phần tử vào đầu mảng
  • array_values(): Trả về mảng tất cả các value
  • array_walk(): Áp dụng hàm callback lên mỗi phần tử
  • array_walk_recursive(): Áp dụng hàm callback lên cả mảng con
  • arsort(): Sắp xếp giảm dần theo value, giữ nguyên key
  • asort(): Sắp xếp tăng dần theo value, giữ nguyên key.
  • compact(): Tạo mảng từ các biến
  • count(): Đếm số phần tử trong mảng
  • current(): Lấy phần tử hiện tại
  • each(): Trả về cặp key/value hiện tại và chuyển con trỏ sang phần tử kế tiếp
  • end(): Chuyển con trỏ tới phần tử cuối mảng
  • extract(): Tạo các biến từ một mảng
  • in_array(): Kiểm tra giá trị có tồn tại trong mảng không
  • key(): Lấy key của phần tử hiện tại
  • krsort(): Sắp xếp giảm dần theo key
  • ksort(): Sắp xếp tăng dần theo key
  • list(): Gán các giá trị từ mảng vào các biến
  • natcasesort(): Sắp xếp tự nhiên không phân biệt hoa thường
  • natsort(): Sắp xếp tự nhiên theo chuỗi
  • next(): Chuyển con trỏ tới phần tử kế tiếp
  • pos(): Trả về vị trí con trỏ mảng hiện tại
  • prev(): Chuyển con trỏ tới phần tử trước đó.
  • range(): Tạo mảng chứa các giá trị trong một khoảng
  • reset(): Chuyển con trỏ về phần tử đầu tiên
  • rsort(): Sắp xếp giảm dần theo value.
  • shuffle(): Xáo trộn ngẫu nhiên các phần tử mảng
  • sizeof(): Tương tự count(), đếm số phần tử mảng
  • sort(): Sắp xếp tăng dần theo value.
  • uasort(): Sắp xếp bằng hàm callback
  • uksort(): Sắp xếp key bằng hàm callback
  • usort(): Sắp xếp value bằng hàm callback

Recruit

Please fill all form fields
Note: only upload pdf, doc, docx files and the file size is limited to 5Mb

Recruit

Please fill all form fields
Note: only upload pdf, doc, docx files and the file size is limited to 5Mb