Được thiết lập mảng php?

Nếu bạn có một danh sách các mục (ví dụ: danh sách tên ô tô), việc lưu trữ ô tô trong các biến đơn lẻ có thể trông như thế này

$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";

Tuy nhiên, nếu bạn muốn đi vòng qua các ô tô và tìm một ô tô cụ thể thì sao?

Giải pháp là tạo một mảng

Một mảng có thể chứa nhiều giá trị dưới một tên duy nhất và bạn có thể truy cập các giá trị bằng cách tham chiếu đến một số chỉ mục

Trong bài học trước bạn đã biết khái niệm về kiểu dữ liệu mảng, cách khai báo mảng và cách truy xuất phần tử của mảng. Trong PHP, mảng là một kiểu dữ liệu tập hợp mạnh mẽ, đa năng. Mảng không chỉ được sử dụng để lưu trữ dữ liệu mà còn là nền tảng cho nhiều loại tập dữ liệu khác nhau (như tập toán học, ngăn xếp, hàng chờ, v.v.). v. )

Có thể nói, nắm bắt được cách làm việc với mảng là một trong những yêu cầu quan trọng nhất trong giai đoạn học lập trình PHP cơ bản

Để phát huy khả năng của dữ liệu mảng, bạn cần biết nhiều thao tác cơ bản với loại dữ liệu này, như bổ sung/ớt phần tử, duyệt mảng, lọc dữ liệu mảng, sắp xếp mảng, tìm kiếm trong mảng, thực thi . v

ĐỘI DUNG CỦA BẢN DỊCH Ẩn

1. Thêm phần tử mới vào mảng

2. Duyệt mảng trong PHP, lệnh lặp foreach

3. Xóa phần tử của mảng

3. 1. Hàm unset()

3. 2. Hàm array_splice()

4. Tìm kiếm trong mảng

4. 1. Xác định giá trị trong mảng, hàm in_array()

4. 2. Xác định từ khóa trong mảng, hàm array_key_exists(()

4. 3. Tìm kiếm key theo giá trị, hàm array_search()

5. Một số thao tác khác với mảng

5. 1. Đếm phần tử

5. 2. Kiểm tra mảng biến

5. 3. Sắp xếp mảng

5. 4. Trao phần tử ngẫu nhiên

5. 5. Chuyển mảng thành biến danh sách

5. 6. Chuyển danh sách biến thành mảng

6. Kết luận

Thêm phần tử mới vào mảng

PHP cung cấp một số cách để thêm phần tử mới vào mảng. Lưu ý rằng các phương pháp này đều bổ sung phần tử vào cuối mảng

Argument with array number may be used method after

$emails = array();
$emails[] = '[email protected]';
$emails[] = '[email protected]';
$emails[] = '[email protected]';
// dùng lệnh này để xem thông tin chi tiết về biến
var_dump($emails);

Kết quả chạy lệnh var_dump($emails) as after

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}

Ở đây chúng ta sử dụng phép toán truy xuất phần tử của mảng nhưng không cung cấp chỉ số

Khi sử dụng phương pháp này, PHP sẽ tự động tính chỉ số cho mỗi phần tử được thêm vào cuối mảng. Quy tắc tính giá trị cho các số tiếp theo chỉ lấy số lớn nhất hiện có cộng thêm 1

Lưu ý rằng, bạn cũng có thể tự đặt số trong cặp trích lược []. Nếu chỉ số chưa tồn tại, giá trị đó sẽ được thêm vào mảng. Nếu chỉ sử dụng số đã tồn tại, giá trị mới sẽ chồng lên giá trị cũ. Các số chỉ không cần liên tục. Ví dụ, bạn hoàn toàn có thể thêm giá trị như sau

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}

Nói lại, đối với mảng chỉ số, bạn có thể sử dụng phép toán truy xuất phần tử với chỉ số chưa tồn tại hoặc chỉ số tự động để bổ sung phần tử

Đối với mảng kết hợp, phương pháp thực hiện tương tự như truy xuất phần tử nhưng sử dụng từ khóa không tồn tại

$book = []; // tạo một mảng rỗng rồi lần lượt thêm từng cặp khóa/giá trị
$book['title'] = 'PHP programming for dummy'; // khóa 'title', giá trị 'PHP programming for dummy'
$book['authors'] = 'Trump D.';
$book['publisher'] = 'Washington';
var_dump($book);
array(3) {
'title' =>
string(25) "PHP programming for dummy"
'authors' =>
string(8) "Trump D."
'publisher' =>
string(10) "Washington"
}

Nếu bạn sử dụng một khóa đã có sẵn, PHP sẽ hiểu rằng đó là phép toán truy xuất và sẽ ghi đè giá trị cũ. Nếu bạn sử dụng một từ khóa mới, PHP sẽ thêm phần tử này vào mảng

Một phương pháp nữa là sử dụng hàm array_push()

$capital_cities = ['Hanoi', 'Washington'];
array_push($capital_cities, 'Moscow', 'Beijing', 'Tokyo');
var_dump($capital_cities);
array(5) {
[0] =>
string(5) "Hanoi"
[1] =>
string(10) "Washington"
[2] =>
string(6) "Moscow"
[3] =>
string(7) "Beijing"
[4] =>
string(5) "Tokyo"
}

Phương pháp này chỉ được sử dụng cho mảng số. You can't supply cặp key => price_trị cho hàm array_push()

array_push() cùng với array_pop() cho phép sử dụng mảng như một ngăn xếp

Duyệt mảng trong PHP, foreach command foreach

Để duyệt mảng nói chung phải sử dụng lệnh lặp

Tuy nhiên, làm đặc thù của mảng trong PHP, việc sử dụng các lệnh lặp thông thường trong khi, do-while, cho không phù hợp

Như bạn đã biết, mảng trong PHP có thể sử dụng chỉ số (số nguyên) hoặc từ khóa (chuỗi ký tự). Chỉ số có và khóa có thể gán tùy chọn chứ không phải thiết bị nhất phải theo quy định nào

Khi đó, việc truy quét với các vòng lặp thông thường có thể bỏ sót các phần tử hoặc không thực hiện được

Để truy cập mảng, PHP cung cấp một lệnh riêng. cho mỗi. Please view ví dụ sau

$days = [2 => 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
foreach ($days as $day) {
    echo $day ."\t";
}
Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Cú pháp sử dụng lệnh lặp foreach như sau.

array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
5

Câu lệnh foreach sử dụng mẫu thiết kế iterator và chỉ bộ số nội bộ của mảng để duyệt qua từng phần tử. Khi dừng lại ở bất kỳ phần tử nào, giá trị của nó được sao chép sang biến tạm thời (dưới dạng $biến_tạm thời). Bạn sử dụng giá trị của phần tử thông qua biến tạm thời này. Biến tạm thời chỉ là bản sao, những thay đổi trên biến này không ảnh hưởng đến phần tử tương ứng của mảng

Cú pháp chỉ lấy phần giá trị được đưa vào biến tạm thời mà bỏ qua phần khóa/chỉ số. Trong trường hợp bạn cần lấy cả số (mảng chỉ số) hoặc từ khóa (mảng kết hợp), bạn cần sử dụng cú pháp hơi khác.

array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
6

Please view ví dụ sau

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
0
array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
1

Tại đây, khi dừng lại ở bất kỳ phần tử nào của mảng, lệnh foreach sẽ sao chép khóa của nó sang biến $key và sao chép giá trị của nó sang biến $info

Với cách này, khi dừng lại ở bất kỳ phần tử nào, hãy lặp lại lệnh foreach copy key và giá trị của phần tử tương ứng sang cặp biến tạm thời để bạn sử dụng

Đối với mảng của mảng, bạn cần sử dụng kết hợp các lệnh lặp cho nhau lồng nhau

Một cách khác để duyệt mảng là sử dụng kết hợp hàm list() và each(). Please view ví dụ sau

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
2

Trong ví dụ này, mỗi hàm() lần lượt lấy từng phần tử của mảng. Nếu không còn bất kỳ phần tử nào, each() return value false. Ứng với mỗi phần tử chúng ta sử dụng hàm list() để tách nó ra thành phần khóa và thành phần giá trị

Từ PHP 7. 2 khuyến nghị không sử dụng list() và each() nữa mà chỉ nên sử dụng foreach. Trình bày list() và each() ở đây chỉ mang tính giới thiệu nếu bạn đọc mã viết cho các phiên bản cũ hơn

Delete the Element section

Bỏ cài đặt hàm()

Cách đơn giản nhất để xóa phần tử của mảng là sử dụng hàm unset() trên các phần tử cần xóa. Please view ví dụ sau

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
3____14

Như vậy, chỉ cần truy xuất phần tử nào theo từ khóa/chỉ số, bạn sẽ có thể xóa nó khỏi mảng sử dụng hàm unset() giống như xóa một biến thông thường.

array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
7 Hàm unset() nhận không giới hạn số lượng tham số nếu bạn có thể đồng thời xóa bỏ nhiều phần tử của mảng

Argument with array number to save. when you unset() an tử phần, chỉ số của các phần tử khác không được tính lại. Làm như vậy nếu cần tính toán và sắp xếp lại chỉ số, bạn cần thực hiện thủ công

Ví dụ

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
5
array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
6

Bạn có thể thấy, sau khi xóa các phần tử ở vị trí hiện tại, các phần tử vẫn được giữ nguyên số. Đây là một điều khác biệt nếu bạn từng thuộc về mảng trong các ngôn ngữ như C#

Hàm array_splice()

Một cách khác bạn cũng thường gặp khi đọc các tài liệu về mảng trong PHP là sử dụng hàm array_splice(). Please view ví dụ sau

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
7____18

Khi sử dụng hàm array_splice(), bạn cung cấp offset (độ dịch/vị trí) và số lượng phần tử cần xóa. Trong ví dụ trên chúng tôi yêu cầu xóa 2 phần tử từ vị trí số 1 – bao gồm 'họ' và 'tuổi'. Chú ý, vị trí của phần tử đầu tiên được tính là số 0

Khi sử dụng array_splice() với mảng chỉ số cần lưu ý, sau khi xóa phần tử, hàm này sẽ tự động tính toán lại chỉ số bắt đầu từ 0. Please view ví dụ sau

array(3) {
[0] =>
string(22) "[email protected]"
[1] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
}
9
$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
0

Bạn có thể để ý thấy, ban đầu $days chỉ có số xuất phát từ 2. Sau khi sử dụng array_splice(), chỉ số được tính lại bắt đầu từ 0 như một tiêu chuẩn chỉ số mảng

Tìm kiếm trong mảng

Tìm kiếm là một trong những chức năng quan trọng và thường gặp trong quá trình làm việc với mảng. PHP cung cấp các hàm để tìm kiếm giá trị, tìm kiếm từ khóa, tìm kiếm phần tử

Specify value in array, function in_array()

Nếu cần xác định xem một giá trị có nằm trong một mảng hay không, bạn có thể sử dụng hàm in_array() theo cách sau

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
1

Trong ví dụ trên chúng ta sử dụng hàm in_array() để kiểm tra xem giá trị 13 (số) và ’13’ (chuỗi) có nằm trong mảng $numbers hay không. Cả hai lệnh đều cho kết quả là 'Có'

Hàm in_array() sẽ duyệt mảng để so sánh giá trị lần lượt cần xác định với các phần tử. Quá trình so sánh này sử dụng phép toán ==. Như bạn đã học trong bài về biểu thức và phép toán trong PHP, phép == thực hiện tung hứng kiểu – tự động chuyển đổi kiểu trước khi so sánh. Do đó, value ’13’ and 13 is compatible nhau

To in_array() sử dụng phép so sánh ===, bạn cần thêm tham số thứ ba TRUE value as after

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
2

Xác định khóa trong mảng, hàm array_key_exists(()

Một vấn đề khác là cần xác định xem một khóa đã được sử dụng trong mảng hay chưa. Để giải quyết, bạn có thể sử dụng hàm array_key_exists() như sau

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
3

Bạn biết giá trị của một phần tử và cần xác định khóa tương ứng của phần tử đó. Để giải quyết có thể sử dụng hàm array_search() như sau

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
4

Tương tự như in_array(), array_search() cũng đọc và so sánh giá trị. The default function will so sánh bằng phép toán ==. Nếu cần so sánh bằng phép toán ===, bạn cần tham số thứ ba với giá trị TRUE

Một số thao tác khác với mảng

Dem number

Để đếm phần tử của mảng, bạn sử dụng hàm count()

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
5
$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
6

Kiểm tra mảng biến

Để kiểm tra xem một biến có phải là mảng hay không, bạn sử dụng hàm is_array()

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
7

Sắp xếp mảng

Để sắp xếp các mảng bạn sử dụng hàm sort() – sắp xếp tăng dần, hoặc sắp xếp() – sắp xếp giảm dần

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
8

Chú ý, sort() và rsort() tác động trực tiếp trên mảng chứ không tạo mảng mới. Các hàm này trả về true nếu sắp xếp thành công và false nếu gặp lỗi trong quá trình sắp xếp

Bạn cũng có thể cung cấp tham số thứ hai để yêu cầu cách sắp xếp. SORT_NUMERIC – xếp hạng theo cách sắp xếp số, hoặc SORT_STRING – xếp hạng theo cách sắp xếp chuỗi ký tự

Random input section

You can puto random the electals of array with shuffle() function

$emails = [];
$emails[] = '[email protected]'; // tự động tính, 0
$emails[11] = '[email protected]'; // tự gán, 11
$emails[2] = '[email protected]'; // tự gán, 2 (nhưng đi sau 11)
$emails[] = '[email protected]'; // tự động tính, 11 (chỉ số lớn nhất hiện có) + 1
var_dump($emails);
9
array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
0

Move a array to variable list

Đây là một tính năng khá đặc biệt của PHP. Trước hết hãy xem ví dụ sau

array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
1
array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
2

Hàm extract() có khả năng đặc biệt. chuyển các cặp từ khóa => giá_trị của một mảng thành các biến có tên và giá trị tương ứng. Ví dụ, phần tử ‘fname’ sẽ chuyển thành biến $fname với giá trị tương ứng ‘Donald’, phần tử ‘age’ sẽ chuyển thành biến $age với giá trị 74 tương ứng

Đây là một cách thức rất tiện lợi khi xử lý các tham số trong truy vấn GET và POST bạn sẽ gặp sau này

Chuyển danh sách biến thành mảng

Đây là thao tác quay ngược của giải nén. Bạn có một danh sách biến và bạn muốn tạo ra một mảng từ danh sách biến này, theo đó tên biến thành từ khóa, giá trị của biến thành giá trị của phần tử tương ứng. Please view ví dụ sau

array(4) {
[0] =>
string(22) "[email protected]"
[11] =>
string(22) "[email protected]"
[2] =>
string(21) "[email protected]"
[12] =>
string(22) "[email protected]"
}
3____34

Để lưu ý rằng hàm compact() tạo ra mảng $contact từ các biến fname, sname, Planet, System, và chòm sao