Viết một hàm PHP để xáo trộn một mảng kết hợp bảo toàn các cặp giá trị khóa

Mảng là danh sách. danh sách người, danh sách kích thước, danh sách sách. Để lưu trữ một nhóm các mục có liên quan trong một biến, hãy sử dụng một mảng. Giống như một danh sách trên một tờ giấy, các phần tử trong mảng có thứ tự. Thông thường, mỗi mục mới xuất hiện sau mục cuối cùng trong mảng, nhưng giống như bạn có thể thêm một mục mới vào giữa một cặp dòng đã có trong danh sách giấy, bạn có thể làm tương tự với mảng trong PHP

Trong nhiều ngôn ngữ, chỉ có một loại mảng. đây được gọi là một mảng số [hoặc chỉ là một mảng]. Trong một mảng số, nếu bạn muốn tìm một mục nhập, bạn cần biết vị trí của nó trong mảng, được gọi là chỉ mục. Vị trí được xác định bằng số. chúng bắt đầu từ 0 và tăng dần lên từng cái một

Trong một số ngôn ngữ, còn có một loại mảng khác. một mảng kết hợp, còn được gọi là hàm băm. Trong một mảng kết hợp, các chỉ mục không phải là số nguyên, mà là các chuỗi. Vì vậy, trong một mảng số của U. S. tổng thống, âAbraham Lincolnâ có thể có chỉ số 16; . â Tuy nhiên, trong khi các mảng số có thứ tự nghiêm ngặt do khóa của chúng áp đặt, thì các mảng kết hợp thường không đảm bảo về thứ tự khóa. Các phần tử được thêm vào theo một thứ tự nhất định, nhưng không có cách nào để xác định thứ tự sau này

Trong một số ngôn ngữ, có cả mảng số và mảng kết hợp. Nhưng thông thường mảng số

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
23 và mảng kết hợp
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
23 là các mảng riêng biệt. Mỗi loại mảng có một hành vi cụ thể và bạn cần thao tác trên đó cho phù hợp. PHP có cả mảng số và mảng kết hợp, nhưng chúng không hoạt động độc lập

Trong PHP, mảng số là mảng kết hợp và mảng kết hợp là mảng số. Vậy chúng thực sự là loại nào? . Ranh giới giữa họ liên tục mờ đi từ người này sang người khác. Lúc đầu, điều này có thể khiến bạn mất phương hướng, đặc biệt nếu bạn đã quen với cách cư xử cứng nhắc, nhưng chẳng bao lâu sau, bạn sẽ thấy sự linh hoạt này là một lợi thế

Để gán nhiều giá trị cho một mảng trong một bước, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];

Bây giờ, giá trị của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
26 là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
27

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25 rất tiện dụng khi bạn có một danh sách ngắn các giá trị đã biết. Mảng tương tự cũng được tạo ra bởi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';

________số 8

Gán một giá trị cho một mảng với một chỉ số trống là cách viết tắt để thêm một phần tử mới vào cuối mảng. Vì vậy, PHP tra cứu độ dài của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
29 và sử dụng độ dài đó làm vị trí cho giá trị mà bạn đang chỉ định. Tất nhiên, điều này giả định rằng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
29 không được đặt thành giá trị vô hướng, chẳng hạn như 3 và không phải là đối tượng. PHP phàn nàn nếu bạn cố coi một mảng không phải là một mảng;

Một tính năng giống hệt là hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
31, đẩy một giá trị mới lên trên ngăn xếp mảng. Tuy nhiên, ký hiệu
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
32 là kiểu PHP truyền thống hơn; . Nhưng đôi khi, việc sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
31 truyền tải chính xác hơn bản chất ngăn xếp của những gì bạn đang cố gắng thực hiện, đặc biệt là khi kết hợp với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
34 , thao tác này sẽ loại bỏ phần tử cuối cùng khỏi một mảng và trả về phần tử đó

Cho đến giờ, chúng ta chỉ đặt các số nguyên và chuỗi bên trong các mảng. Tuy nhiên, PHP cho phép bạn gán bất kỳ kiểu dữ liệu nào bạn muốn cho một phần tử mảng. booleans, số nguyên, số dấu phẩy động, chuỗi, đối tượng, tài nguyên,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
35 và thậm chí các mảng khác. Vì vậy, bạn có thể kéo các mảng hoặc đối tượng trực tiếp từ cơ sở dữ liệu và đặt chúng vào một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
6

Câu lệnh

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
36 đầu tiên tạo ra một mảng các mảng; . Xem Công thức 4. 2 để biết thêm về cách lưu trữ nhiều phần tử trên mỗi khóa

Để xác định một mảng không sử dụng các khóa số nguyên mà sử dụng các khóa chuỗi, bạn cũng có thể sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25, nhưng chỉ định các cặp khóa/giá trị với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
38

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
0

Bây giờ, giá trị của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
39 là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
27. Đây là cách viết tắt của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
3

Mỗi mảng chỉ có thể chứa một giá trị duy nhất cho mỗi khóa. Thêm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
4

ghi đè lên giá trị của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
41. Tuy nhiên, bạn luôn có thể thêm một khóa khác sau

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
6

Bạn càng lập trình nhiều trong PHP, bạn càng thấy mình sử dụng mảng kết hợp thay vì mảng số. Thay vì tạo một mảng số với các giá trị chuỗi, bạn có thể tạo một mảng kết hợp và đặt các giá trị của bạn làm khóa của nó. Nếu muốn, bạn có thể lưu trữ thông tin bổ sung trong giá trị của phần tử. Không có hình phạt tốc độ để làm điều này, và PHP duy trì thứ tự. Ngoài ra, việc tìm kiếm hoặc thay đổi giá trị thật dễ dàng vì bạn đã biết khóa

Cách dễ nhất để duyệt qua một mảng và thao tác trên tất cả hoặc một số phần tử bên trong là sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
8

Mỗi lần đi qua vòng lặp, PHP gán khóa tiếp theo cho

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
43 và giá trị của khóaâ cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
44. Khi không còn phần tử nào trong mảng, vòng lặp kết thúc

Để chia một mảng thành các biến riêng lẻ, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
45

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
2

4. 1.  Chỉ định một mảng không bắt đầu ở phần tử 0

Bạn muốn gán nhiều phần tử cho một mảng trong một bước, nhưng bạn không muốn chỉ số đầu tiên là 0

Hướng dẫn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25 sử dụng một chỉ mục khác bằng cú pháp
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
38

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
0

Mảng trong PHP—giống như hầu hết, nhưng không phải tất cả, ngôn ngữ máy tính—bắt đầu với mục đầu tiên nằm ở chỉ mục 0. Tuy nhiên, đôi khi, dữ liệu bạn đang lưu trữ có ý nghĩa hơn nếu danh sách bắt đầu từ 1. [Và chúng tôi không chỉ nói về việc khôi phục các lập trình viên Pascal ở đây. ]

Trong Giải pháp, George Washington là tổng thống đầu tiên, không phải là số 0, vì vậy nếu bạn muốn in danh sách các tổng thống, việc này sẽ đơn giản hơn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
1

hơn cái này

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
2

Tính năng này không bị giới hạn ở số 1;

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
3

Ngoài ra, bạn có thể sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
38 nhiều lần trong một cuộc gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
4

PHP thậm chí còn cho phép bạn sử dụng số âm trong cuộc gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25. [Trên thực tế, phương pháp này cũng hoạt động đối với các khóa không phải là số nguyên. ] Những gì bạn sẽ nhận được về mặt kỹ thuật là một mảng kết hợp, mặc dù như chúng tôi đã nói, ranh giới giữa mảng số và mảng kết hợp thường bị mờ trong PHP;

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
5

Nếu Washington là U đầu tiên. S. lãnh đạo, George III là số không, và ông nội George II là tiêu cực đầu tiên

Tất nhiên, bạn có thể kết hợp và kết hợp các phím số và chuỗi trong một định nghĩa

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25, nhưng điều đó gây nhầm lẫn và rất hiếm khi cần thiết

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
6

Điều này tương đương với

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
7

4. 2.  Lưu trữ nhiều phần tử trên mỗi khóa trong một mảng

Bạn muốn liên kết nhiều yếu tố với một khóa duy nhất

Lưu trữ nhiều phần tử trong một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
8

Hoặc sử dụng một đối tượng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
9

Trong PHP, các khóa là duy nhất trên mỗi mảng, vì vậy bạn không thể liên kết nhiều mục trong một khóa mà không ghi đè giá trị cũ. Thay vào đó, hãy lưu trữ các giá trị của bạn trong một mảng ẩn danh

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
0

Hoặc, nếu bạn đang xử lý các mục trong một vòng lặp

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
1

Để in các mục, lặp qua mảng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
2

Hoặc sử dụng hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
51 từ Công thức 4. 9

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
3

Trong PHP5. 0. 0 trở lên, bạn không cần

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
52. chỉ cần chuyển một số gia cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
53 làm đối số thứ ba

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
4

Công thức 4. 9 để biết cách in mảng bằng dấu phẩy

4. 3.  Khởi tạo một mảng thành một dãy số nguyên

Bạn muốn gán một dãy số nguyên liên tiếp vào một mảng

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
54

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
5

Đối với các mức tăng khác 1, bạn có thể sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
6

Vậy đối với số lẻ

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
7

Và đối với số chẵn

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
8

Trong PHP5. 0. 0 trở lên, bạn không cần

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
52. chỉ cần chuyển một số gia cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
53 làm đối số thứ ba

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
4

4. 4.  Lặp qua một mảng

Bạn muốn duyệt qua một mảng và thao tác trên tất cả hoặc một số phần tử bên trong

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
60

Hoặc để lấy khóa và giá trị của một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
61

Một kỹ thuật khác là sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
62

Cuối cùng, bạn có thể sử dụng kết hợp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59 với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
45 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
36

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
63

Vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 là vòng lặp ngắn gọn nhất để lặp qua một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
64

Với

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42, PHP lặp lại một bản sao của mảng thay vì mảng thực tế. Ngược lại, khi sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58, PHP sẽ lặp lại mảng ban đầu. Vì vậy, nếu bạn sửa đổi mảng bên trong vòng lặp, bạn có thể [hoặc không] nhận được hành vi mà bạn mong đợi

Nếu bạn muốn sửa đổi mảng, hãy tham khảo trực tiếp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
65

Các biến được trả về bởi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59 không phải là bí danh cho các giá trị ban đầu trong mảng. chúng là bản sao, vì vậy nếu bạn sửa đổi chúng, nó sẽ không được phản ánh trong mảng. Đó là lý do tại sao bạn cần sửa đổi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
67 thay vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
68

Khi sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59, PHP theo dõi vị trí của bạn trong vòng lặp. Sau khi hoàn thành lần duyệt đầu tiên, để bắt đầu lại từ đầu, hãy gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
70 để di chuyển con trỏ trở lại phía trước mảng. Mặt khác,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59 trả về
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72

Vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58 chỉ hoạt động đối với các mảng có khóa số nguyên liên tiếp. Trừ khi bạn đang sửa đổi kích thước mảng của mình, việc tính toán lại
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
74 của
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
75 mỗi lần qua vòng lặp là không hiệu quả, vì vậy chúng tôi luôn sử dụng biến
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
76 để giữ kích thước của mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
66

Nếu bạn muốn đếm hiệu quả với một biến, hãy đếm ngược

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
67

Phiên bản mảng kết hợp của vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58 là

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
68

Điều này không thành công nếu bất kỳ phần tử nào chứa một chuỗi có giá trị là

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72, do đó, một giá trị hoàn toàn bình thường chẳng hạn như 0 sẽ khiến vòng lặp kết thúc sớm

Cuối cùng, sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
79 để chuyển giao từng phần tử cho một hàm để xử lý

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
69

Đối số đầu tiên của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
79 là một hàm để sửa đổi một phần tử riêng lẻ và đối số thứ hai là mảng được lặp qua

Nói chung, chúng tôi thấy chức năng này kém linh hoạt hơn so với các phương thức trước đó, nhưng nó rất phù hợp để xử lý và hợp nhất nhiều mảng

Nếu bạn không chắc liệu dữ liệu bạn sẽ xử lý là vô hướng hay mảng, bạn cần bảo vệ khỏi việc gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 bằng một dữ liệu không phải mảng. Một phương pháp là sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
82

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
00

Một phương pháp khác là ép buộc tất cả các biến thành dạng mảng bằng cách sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
83

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
01

Điều này biến một giá trị vô hướng thành một mảng một phần tử và làm sạch mã của bạn với chi phí nhỏ

4. 5.  Xóa phần tử khỏi một mảng

Bạn muốn xóa một hoặc nhiều phần tử khỏi mảng

Để xóa một phần tử, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
02

Để xóa nhiều phần tử không liền kề, cũng sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
03

Để xóa nhiều phần tử liền kề, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
04

Sử dụng các hàm này sẽ loại bỏ tất cả các tham chiếu đến các phần tử này khỏi PHP. Nếu bạn muốn giữ một khóa trong mảng, nhưng với một giá trị trống, hãy gán chuỗi trống cho phần tử

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
05

Bên cạnh cú pháp, có một sự khác biệt logic giữa việc sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84 và gán
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
88 cho phần tử. Cái đầu tiên nói, Cái này không còn tồn tại nữa,â trong khi cái thứ hai nói, Cái này vẫn tồn tại, nhưng giá trị của nó là chuỗi rỗng. â

Nếu bạn đang xử lý các con số, việc chỉ định

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89 có thể là một giải pháp thay thế tốt hơn. Vì vậy, nếu một công ty ngừng sản xuất bánh xích mẫu XL1000, công ty sẽ cập nhật hàng tồn kho của mình với

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
06

Tuy nhiên, nếu công ty tạm thời hết nhông xích XL1000 nhưng đang có kế hoạch nhận lô hàng mới từ nhà máy vào cuối tuần này thì tốt hơn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
07

Nếu bạn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84 một phần tử, PHP sẽ điều chỉnh mảng để vòng lặp vẫn hoạt động bình thường. Nó không thu gọn mảng để lấp đầy các lỗ còn thiếu. Đây là điều chúng tôi muốn nói khi nói rằng tất cả các mảng đều có tính liên kết, ngay cả khi chúng có vẻ là số. Đây là một ví dụ

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
08

Để thu gọn mảng thành một mảng số dày đặc, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
91

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
09

Ngoài ra,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86 tự động lập chỉ mục lại các mảng để tránh để lại lỗ hổng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
30

Điều này hữu ích nếu bạn đang sử dụng mảng làm hàng đợi và muốn xóa các mục khỏi hàng đợi trong khi vẫn cho phép truy cập ngẫu nhiên. Để loại bỏ phần tử đầu tiên hoặc cuối cùng khỏi một mảng một cách an toàn, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
93 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
34 tương ứng

Tuy nhiên, nếu bạn thấy mình thường xuyên gặp sự cố do các lỗ hổng trong mảng, thì có thể bạn chưa “nghĩ đến PHP”. â Xem các cách lặp qua mảng trong Công thức 4. 4 không liên quan đến việc sử dụng vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58

4. 6.  Thay đổi kích thước mảng

Bạn muốn sửa đổi kích thước của một mảng, bằng cách làm cho nó lớn hơn hoặc nhỏ hơn kích thước hiện tại của nó

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
96 để làm cho một mảng phát triển

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
31

Bây giờ,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
97 là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
98 và hai phần tử cuối cùng,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
99 và
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
00, chứa chuỗi rỗng

Để giảm một mảng, bạn có thể sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
32

Thao tác này sẽ xóa tất cả trừ hai phần tử đầu tiên khỏi

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02

Mảng không phải là kích thước được khai báo trước trong PHP, vì vậy bạn có thể thay đổi kích thước của chúng một cách nhanh chóng

Để đệm một mảng, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
96. Đối số đầu tiên là mảng được đệm. Đối số tiếp theo là kích thước và hướng bạn muốn đệm. Để đệm sang phải, hãy sử dụng số nguyên dương; . Đối số thứ ba là giá trị được gán cho các mục mới được tạo. Hàm trả về một mảng đã sửa đổi và không thay đổi mảng ban đầu

Dưới đây là một số ví dụ

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
33

Hãy cẩn thận.

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
04 đảm bảo rằng một
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02 dài ít nhất bốn phần tử; . Trong trường hợp này, nếu
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02 đã có bốn phần tử hoặc lớn hơn, thì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
96 sẽ trả về một
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02 không thay đổi

Ngoài ra, nếu bạn khai báo một giá trị cho phần tử thứ tư,

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
00

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
34

bạn kết thúc với một mảng bốn phần tử với các chỉ mục

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
11,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
12 và
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
13

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
35

Về cơ bản, PHP biến điều này thành một mảng kết hợp có các khóa số nguyên

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86, không giống như
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
96, có tác dụng phụ là sửa đổi mảng ban đầu. Nó trả về mảng đã ghép nối. Đó là lý do tại sao bạn không chỉ định giá trị trả về cho
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02. Tuy nhiên, giống như
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
96, bạn có thể nối từ bên phải hoặc bên trái. Vì vậy, gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86 với giá trị là
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
19 sẽ loại bỏ hai phần tử cuối cùng từ cuối

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
36

4. 7.  Nối một mảng vào một mảng khác

Bạn muốn kết hợp hai mảng thành một

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
20

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
37

Hàm

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
20 hoạt động với cả mảng được xác định trước và mảng được xác định tại chỗ bằng cách sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
25

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
38

Theo đó, các mảng được hợp nhất có thể là các mảng có sẵn, như với

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
23 hoặc các mảng ẩn danh, như với
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
24

Bạn không thể sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
31, vì PHP sẽ không tự động làm phẳng mảng thành một loạt các biến độc lập và bạn sẽ có một mảng lồng nhau. Như vậy

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
39

Hợp nhất các mảng chỉ với các phím số làm cho các mảng được đánh số lại, vì vậy các giá trị không bị mất. Việc hợp nhất các mảng với các khóa chuỗi khiến mảng thứ hai ghi đè lên giá trị của bất kỳ khóa trùng lặp nào. Mảng có cả hai loại khóa thể hiện cả hai loại hành vi. Ví dụ

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
40

Chữ hoa A đã được đánh số lại từ chỉ số 0 thành chỉ số 1, để tránh xung đột và được hợp nhất vào cuối. Chữ hoa B đã ghi đè chữ b thường và thay thế nó vào vị trí ban đầu trong mảng

Toán tử

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
26 cũng có thể hợp nhất các mảng. Mảng bên phải ghi đè bất kỳ khóa có tên giống hệt nào được tìm thấy ở bên trái. Nó không thực hiện bất kỳ sự sắp xếp lại nào để tránh va chạm. Sử dụng ví dụ trước

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
41

Vì cả

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
27 và
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
28 đều có khóa là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89 và cả
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
30 và
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
31 đều có khóa là
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
30, nên bạn chỉ có tổng cộng hai phần tử trong các mảng được hợp nhất

Trong trường hợp đầu tiên,

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
33 chỉ trở thành
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
34 và trong trường hợp khác,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
35 trở thành
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
36

Tuy nhiên, nếu bạn có hai mảng có khóa riêng biệt thì đây không phải là vấn đề và mảng mới sẽ là sự kết hợp của hai mảng

4. 8.  Biến Mảng thành Chuỗi

Bạn có một mảng và bạn muốn chuyển đổi nó thành một chuỗi được định dạng đẹp mắt

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
37

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42

Hoặc vòng lặp chính mình

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
43

Nếu bạn có thể sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
37, hãy làm; . Tuy nhiên,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
37 không linh hoạt lắm. Đầu tiên, nó chỉ đặt một dấu phân cách giữa các phần tử, không đặt xung quanh chúng. Để bọc các phần tử bên trong các thẻ in đậm HTML và phân tách chúng bằng dấu phẩy, hãy làm điều này

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
44

Thứ hai,

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
37 không cho phép bạn phân biệt đối xử với các giá trị. Nếu bạn muốn bao gồm một tập hợp con các mục, bạn cần tự lặp lại

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
45

Lưu ý rằng dấu phân cách luôn được thêm vào mỗi giá trị và sau đó bị loại bỏ bên ngoài vòng lặp. Mặc dù hơi lãng phí khi thêm thứ gì đó sẽ bị trừ sau này, nhưng nó sạch và hiệu quả hơn nhiều [trong hầu hết các trường hợp] so với việc cố gắng nhúng logic bên trong vòng lặp. để hóm hỉnh

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
46

Bây giờ bạn phải kiểm tra

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
41 mỗi khi bạn thêm một giá trị. Điều đó tệ hơn cuộc gọi
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
42 đơn giản. Ngoài ra, hãy thêm vào trước dấu phân cách [trong trường hợp này là dấu phẩy] thay vì thêm vào bởi vì việc rút ngắn một chuỗi từ phía trước sẽ nhanh hơn so với phía sau

4. 9.  In một mảng bằng dấu phẩy

Bạn muốn in ra một mảng có dấu phẩy ngăn cách các phần tử và có dấu âvàâ trước phần tử cuối cùng nếu có nhiều hơn hai phần tử trong mảng

Sử dụng hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
51 được hiển thị trong Ví dụ 4-1, hàm này sẽ trả về chuỗi chính xác

Ví dụ 4-1.  pc_array_to_comma_string[]

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
47

Nếu bạn có một danh sách các mục cần in, bạn nên in chúng theo cách đúng ngữ pháp. Có vẻ khó xử khi hiển thị văn bản như thế này

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
48

Việc triển khai chức năng này không hoàn toàn đơn giản, vì chúng tôi muốn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
51 hoạt động với tất cả các mảng, không chỉ các mảng số bắt đầu từ
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89. Nếu chỉ giới hạn trong tập hợp con đó, đối với một mảng có kích thước một, bạn trả về
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
46. Nhưng nếu mảng không bắt đầu ở
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89, thì
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
46 trống. Vì vậy, bạn có thể sử dụng thực tế là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
70, thiết lập lại con trỏ bên trong của một mảng, cũng trả về giá trị của phần tử mảng đầu tiên

Vì những lý do tương tự, bạn gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
34 để lấy phần tử kết thúc, thay vì cho rằng nó nằm ở
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
51. Điều này cho phép bạn sử dụng
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
37 trên
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
02

Cũng lưu ý rằng mã cho trường hợp 2 thực sự cũng hoạt động chính xác cho trường hợp 1. Và mã mặc định hoạt động [mặc dù không hiệu quả] cho trường hợp 2;

4. 10.  Kiểm tra xem Khóa có nằm trong Mảng hay không

Bạn muốn biết liệu một mảng có chứa một khóa nhất định hay không

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
54 để kiểm tra khóa bất kể giá trị được liên kết là gì

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
49

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
55 để tìm khóa có giá trị được liên kết là bất kỳ giá trị nào ngoại trừ
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
56

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
60

Hàm

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
54 hoàn toàn bỏ qua các giá trị mảng—nó chỉ báo cáo liệu có phần tử nào trong mảng có một khóa cụ thể hay không. Tuy nhiên,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
55 hoạt động theo cùng một cách trên các khóa mảng cũng như với các biến khác. Giá trị
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
56 khiến
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
55 trả về false. Xem phần Giới thiệu về Chương 5 để biết thêm thông tin về giá trị thực của các biến

4. 11.  Kiểm tra xem một phần tử có trong một mảng hay không

Bạn muốn biết một mảng có chứa một giá trị nào đó không

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
61

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 để kiểm tra xem một phần tử của mảng có giữ giá trị không

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
62

Hành vi mặc định của

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 là so sánh các mục bằng cách sử dụng toán tử
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
64. Để sử dụng kiểm tra đẳng thức nghiêm ngặt,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
65, hãy chuyển
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
66 làm tham số thứ ba cho
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
63

Lần kiểm tra đầu tiên,

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
68, ước tính thành
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
66 vì để so sánh số
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89 với chuỗi
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
71, PHP chuyển đổi
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
71 thành một số nguyên. Vì
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
71 không phải là một chuỗi số, cũng như
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
12, nó trở thành
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89. Do đó,
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 nghĩ rằng có một trận đấu

Do đó, khi so sánh các số với dữ liệu có thể chứa chuỗi, an toàn nhất là sử dụng phép so sánh nghiêm ngặt

Nếu bạn thấy mình gọi

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 nhiều lần trên cùng một mảng, có thể tốt hơn là sử dụng mảng kết hợp, với các phần tử mảng ban đầu làm khóa trong mảng kết hợp mới. Tra cứu các mục sử dụng
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 mất thời gian tuyến tính;

Nếu bạn không thể trực tiếp tạo mảng kết hợp mà cần chuyển đổi từ mảng truyền thống bằng các khóa số nguyên, hãy sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
79 để hoán đổi khóa và giá trị của một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
64

Lưu ý rằng việc làm này sẽ cô đọng nhiều khóa có cùng giá trị thành một phần tử trong mảng đã lật

4. 12.  Tìm vị trí của một giá trị trong một mảng

Bạn muốn biết nếu một giá trị nằm trong một mảng. Nếu giá trị nằm trong mảng, bạn muốn biết khóa của nó

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
80. Nó trả về khóa của giá trị tìm thấy. Nếu giá trị không có trong mảng, nó sẽ trả về
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
65

Sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 để tìm xem một mảng có chứa giá trị hay không; . Tuy nhiên, vì
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
80 xử lý các tìm kiếm không tìm thấy giá trị một cách duyên dáng nên tốt hơn là sử dụng
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
80 thay vì
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61. Sự khác biệt về tốc độ là phút và thông tin bổ sung có khả năng hữu ích

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
66

Sử dụng kiểm tra

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
87 đối với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72 vì nếu chuỗi của bạn được tìm thấy trong mảng ở vị trí
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89, thì
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
90 sẽ ước tính thành một
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72 hợp lý, đó không phải là ý nghĩa hoặc mong muốn

Nếu một giá trị nằm trong mảng nhiều lần, thì

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
80 chỉ được đảm bảo trả về một trong các phiên bản chứ không phải phiên bản đầu tiên

4. 13.  Tìm các yếu tố vượt qua một bài kiểm tra nhất định

Bạn muốn xác định vị trí các mục trong một mảng đáp ứng các yêu cầu nhất định

Sử dụng vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
67

Hoặc

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
94

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
68

Các vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 rất đơn giản. bạn lặp qua dữ liệu và nối các phần tử vào mảng trả về phù hợp với tiêu chí của bạn

Nếu bạn chỉ muốn phần tử đầu tiên như vậy, hãy thoát khỏi vòng lặp bằng cách sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
96

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
69

Bạn cũng có thể trả về trực tiếp từ một chức năng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
80

Tuy nhiên, với

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
94, trước tiên bạn tạo một hàm gọi lại trả về
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
66 cho các giá trị bạn muốn giữ lại và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
72 cho các giá trị bạn không muốn. Sử dụng
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
94, sau đó bạn hướng dẫn PHP xử lý mảng như bạn làm trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42

Không thể giải cứu sớm từ

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
94, vì vậy
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 mang lại sự linh hoạt hơn và dễ hiểu hơn. Ngoài ra, đây là một trong số ít trường hợp hàm PHP tích hợp không rõ ràng vượt trội so với mã cấp độ người dùng

4. 14.  Tìm phần tử có giá trị lớn nhất hoặc nhỏ nhất trong một mảng

Bạn có một mảng các phần tử và bạn muốn tìm phần tử có giá trị lớn nhất hoặc nhỏ nhất. Ví dụ: bạn muốn tìm tỷ lệ thích hợp khi tạo biểu đồ

Để tìm phần tử lớn nhất, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
604

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
81

Để tìm phần tử nhỏ nhất, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
605

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
82

Thông thường,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
604 trả về phần tử lớn hơn trong hai phần tử, nhưng nếu bạn truyền cho nó một mảng, nó sẽ tìm kiếm toàn bộ mảng đó. Thật không may, không có cách nào để tìm chỉ mục của phần tử lớn nhất bằng cách sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
604. Để làm được điều đó, bạn phải sắp xếp mảng theo thứ tự ngược lại để đưa phần tử lớn nhất vào vị trí 0

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
83

Bây giờ giá trị của phần tử lớn nhất là

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
46

Nếu bạn không muốn xáo trộn thứ tự của mảng ban đầu, hãy tạo một bản sao và sắp xếp bản sao

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84

Khái niệm tương tự áp dụng cho

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
605 nhưng sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
610 thay vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
611

4. 15.  Đảo ngược một mảng

Bạn muốn đảo ngược thứ tự các phần tử trong mảng

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
612

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
85

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
612 đảo ngược các phần tử trong một mảng. Tuy nhiên, thường có thể tránh thao tác này. Nếu bạn muốn đảo ngược một mảng bạn vừa sắp xếp, hãy sửa đổi cách sắp xếp để thực hiện ngược lại. Nếu bạn muốn đảo ngược danh sách mà bạn sắp lặp lại và xử lý, chỉ cần đảo ngược vòng lặp. Thay vì

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
86

làm như sau

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
87

Tuy nhiên, như mọi khi, chỉ sử dụng vòng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
58 trên một mảng được đóng gói chặt chẽ

Một cách khác, nếu có thể, là đảo ngược thứ tự các phần tử được đặt vào mảng. Chẳng hạn, nếu bạn đang điền vào một mảng từ một loạt các hàng được trả về từ cơ sở dữ liệu, bạn có thể sửa đổi truy vấn thành

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
615. Xem hướng dẫn sử dụng cơ sở dữ liệu của bạn để biết cú pháp chính xác cho cơ sở dữ liệu của bạn

Bạn muốn sắp xếp một mảng theo một cách cụ thể

Để sắp xếp một mảng bằng cách sử dụng định nghĩa sắp xếp truyền thống, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
616

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
88

Để sắp xếp theo số, hãy chuyển

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
617 làm đối số thứ hai cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
616

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89

Điều này sử dụng các số theo thứ tự tăng dần

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
619 thay vì thứ tự từ điển
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
620

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
616 không bảo toàn liên kết khóa/giá trị giữa các phần tử; . [Một ngoại lệ đối với quy tắc này là mảng một phần tử; phần tử đơn lẻ của nó không được đặt lại chỉ mục thành
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89. Điều này đã được sửa kể từ PHP 4. 2. 3. ]

Để duy trì các liên kết khóa/giá trị, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
610. Hàm
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
610 thường được sử dụng cho các mảng kết hợp, nhưng nó cũng có thể hữu ích khi chỉ mục của các mục nhập có ý nghĩa

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
20

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
626 để sắp xếp mảng bằng thuật toán sắp xếp tự nhiên. Theo cách sắp xếp tự nhiên, bạn có thể trộn các chuỗi và số bên trong các phần tử của mình mà vẫn nhận được câu trả lời đúng

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
21

Các phần tử hiện được sắp xếp theo thứ tự

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
627,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
628,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
629 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
630. Với cách sắp xếp tự nhiên, số
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
631 xuất hiện sau số
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
12; . Để sắp xếp tự nhiên không phân biệt chữ hoa chữ thường, hãy sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
633

Để sắp xếp mảng theo thứ tự ngược lại, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
634 hoặc
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
611, giống như
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
634 nhưng cũng giữ nguyên các khóa. Không có
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
637 hoặc
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
638. Bạn cũng có thể chuyển
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
617 vào các chức năng này

4. 17.  Sắp xếp một mảng theo một trường có thể tính toán

Bạn muốn xác định quy trình sắp xếp của riêng mình

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
640 kết hợp với chức năng so sánh tùy chỉnh

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
22

Hàm so sánh phải trả về giá trị lớn hơn 0 nếu

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
641,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
89 nếu
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
643 và giá trị nhỏ hơn 0 nếu
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
644. Để sắp xếp ngược lại, hãy làm ngược lại. Hàm trong Giải pháp,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
645, tuân theo các quy tắc đó

Để đảo ngược sắp xếp, thay vì nhân giá trị trả về của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
646 với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
647, hãy chuyển thứ tự của các đối số thành
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
648

Chức năng sắp xếp không cần phải là trình bao bọc cho một sắp xếp hiện có. Chẳng hạn, hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
649, được hiển thị trong Ví dụ 4-2, cho biết cách sắp xếp ngày

Ví dụ 4-2.  pc_date_sort[]

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
23

Trong khi sắp xếp,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
640 thường xuyên tính toán lại các giá trị trả về của hàm sắp xếp mỗi khi cần so sánh hai phần tử, điều này làm chậm quá trình sắp xếp. Để tránh thực hiện công việc không cần thiết, bạn có thể lưu các giá trị so sánh vào bộ nhớ cache, như được hiển thị trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
651 trong Ví dụ 4-3

Ví dụ 4-3.  pc_array_sort[]

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
24

Để tránh những công việc không cần thiết,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
651 sử dụng một mảng tạm thời,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
653, để lưu trữ các giá trị trả về. Sau đó, nó sắp xếp
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
653, sử dụng thứ tự sắp xếp mặc định hoặc quy trình sắp xếp do người dùng chỉ định. Điều quan trọng là nó sử dụng một cách sắp xếp để duy trì mối quan hệ khóa/giá trị. Theo mặc định, nó sử dụng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
610 vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
610 nhanh hơn
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
657. [Sự chậm chạp trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
657 rốt cuộc là toàn bộ lý do của
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
651. ] Cuối cùng, nó tạo một mảng đã sắp xếp,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
660, sử dụng các khóa đã sắp xếp trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
653 để lập chỉ mục các giá trị trong mảng ban đầu

Đối với các mảng nhỏ hoặc các hàm sắp xếp đơn giản, ________ 1640 nhanh hơn, nhưng khi số lượng tính toán tăng lên, ________ 1651 sẽ vượt qua ________ 1640. Ví dụ sau đây sắp xếp các phần tử theo độ dài chuỗi của chúng, một cách sắp xếp tùy chỉnh tương đối nhanh

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
25

Ở đây,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
651 nhanh hơn
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
640 khi mảng đạt đến năm phần tử

4. 18.  Sắp xếp nhiều mảng

Bạn muốn sắp xếp nhiều mảng hoặc một mảng có nhiều chiều

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
667

Để sắp xếp đồng thời nhiều mảng, hãy chuyển nhiều mảng tới

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
667

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
26

Để sắp xếp nhiều thứ nguyên trong một mảng, hãy chuyển các phần tử mảng cụ thể

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
27

Để sửa đổi kiểu sắp xếp, như trong

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
616, hãy chuyển vào
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
670,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
617 hoặc
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
672 sau mảng. Để sửa đổi thứ tự sắp xếp, không giống như trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
616, hãy chuyển vào
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
674 hoặc
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
675 sau mảng. Bạn cũng có thể chuyển cả kiểu sắp xếp và thứ tự sắp xếp sau mảng

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
667 có thể sắp xếp nhiều mảng cùng lúc hoặc mảng nhiều chiều theo một hoặc nhiều chiều. Các mảng được coi như các cột của bảng được sắp xếp theo hàng. Mảng đầu tiên là mảng chính để sắp xếp theo; . Nếu các mục trong mảng đầu tiên so sánh bằng nhau, thì thứ tự sắp xếp được xác định bởi mảng thứ hai, v.v.

Các giá trị sắp xếp mặc định là

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
670 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
674 và chúng được đặt lại sau mỗi mảng, vì vậy không có lý do gì để chuyển một trong hai giá trị này, ngoại trừ sự rõ ràng

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
28

Ví dụ này đảo ngược các mảng

4. 19.  Sắp xếp một mảng bằng một phương thức thay vì một hàm

Bạn muốn xác định thói quen sắp xếp tùy chỉnh để sắp xếp một mảng. Tuy nhiên, thay vì sử dụng một hàm, bạn muốn sử dụng một phương thức đối tượng

Truyền vào một mảng chứa tên lớp và phương thức thay cho tên hàm

$fruits = array['Apples', 'Bananas', 'Cantaloupes', 'Dates'];
29

Cũng giống như hàm sắp xếp tùy chỉnh, phương thức đối tượng cần nhận hai đối số đầu vào và trả về 1, 0 hoặc â1, tùy thuộc vào việc tham số đầu tiên có lớn hơn, bằng hoặc nhỏ hơn tham số thứ hai hay không.

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
00

4. 20.  Ngẫu nhiên hóa một mảng

Bạn muốn xáo trộn các phần tử của một mảng theo thứ tự ngẫu nhiên

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
679

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
01

Xáo trộn một mảng đúng cách cực kỳ khó. Trên thực tế, cho đến PHP 4. 3, Quy trình

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
679 của PHP không phải là một sự xáo trộn thực sự ngẫu nhiên. Nó sẽ kết hợp các yếu tố xung quanh, nhưng một số kết hợp nhất định có nhiều khả năng hơn các kết hợp khác

Do đó, bạn nên sử dụng hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
679 của PHP bất cứ khi nào có thể

4. 21.  Xóa các phần tử trùng lặp khỏi một mảng

Bạn muốn loại bỏ các bản sao khỏi một mảng

Nếu mảng đã hoàn thành, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
682, trả về một mảng mới không chứa giá trị trùng lặp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
02

Nếu bạn tạo mảng trong khi xử lý kết quả, đây là một kỹ thuật dành cho mảng số

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
03

Đây là một cho mảng kết hợp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
04

Sau khi quá trình xử lý hoàn tất,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
682 là cách tốt nhất để loại bỏ trùng lặp. Nhưng nếu bạn đang ở trong một vòng lặp, bạn có thể loại bỏ các mục nhập trùng lặp xuất hiện bằng cách kiểm tra xem chúng đã có trong mảng chưa

Một phương pháp thậm chí còn nhanh hơn sử dụng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 là tạo một mảng kết hợp trong đó khóa và giá trị cho mỗi phần tử giống nhau. Điều này giúp loại bỏ kiểm tra tuyến tính của
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61 nhưng vẫn cho phép bạn tận dụng lợi thế của họ hàm mảng hoạt động trên các giá trị của một mảng thay vì các khóa

Trên thực tế, sử dụng phương pháp mảng kết hợp và sau đó gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
91 trên kết quả sẽ nhanh hơn [hoặc, đối với vấn đề đó,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
687 , nhưng
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
91 nhanh hơn một chút] so với việc tạo một mảng số trực tiếp với chi phí của
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
61

4. 22.  Áp dụng hàm cho từng phần tử trong một mảng

Bạn muốn áp dụng một hàm hoặc phương thức cho từng phần tử trong một mảng. Điều này cho phép bạn chuyển đổi dữ liệu đầu vào cho toàn bộ tập hợp cùng một lúc

Sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
690

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
05

Đối với dữ liệu lồng nhau, hãy sử dụng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
691

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
06

Nó thường hữu ích để lặp qua tất cả các phần tử của một mảng. Một lựa chọn là

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 thông qua dữ liệu. Tuy nhiên, một lựa chọn thay thế là hàm
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
690

Hàm này lấy một mảng và tên của hàm gọi lại, là hàm xử lý các phần tử của mảng. Hàm gọi lại nhận hai tham số, một giá trị và một khóa. Nó cũng có thể nhận một tham số thứ ba tùy chọn, là bất kỳ dữ liệu bổ sung nào bạn muốn hiển thị trong cuộc gọi lại

Đây là một ví dụ đảm bảo tất cả dữ liệu trong mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
694 được mã hóa HTML chính xác. Hàm gọi lại,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
695, nhận các giá trị mảng, chuyển chúng tới
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
696 để mã hóa các thực thể HTML chính và gán kết quả lại cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
697

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
05

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
698 hoạt động tại chỗ thay vì trả về một bản sao đã sửa đổi của mảng, nên bạn phải chuyển các giá trị theo tham chiếu khi muốn sửa đổi các phần tử. Trong những trường hợp đó, như trong ví dụ này, có một
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
699 trước tên tham số. Tuy nhiên, điều này chỉ cần thiết khi bạn muốn thay đổi mảng

Khi bạn có một loạt các mảng lồng nhau, hãy sử dụng hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
691

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
06

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
691 chỉ chuyển các phần tử không phải mảng cho hàm gọi lại, vì vậy bạn không cần sửa đổi hàm gọi lại khi chuyển từ
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
690

4. 23.  Tìm Giao, Giao hoặc Hiệu của Hai Mảng

Bạn có một cặp mảng và bạn muốn tìm hợp của chúng [tất cả các phần tử], giao điểm [các phần tử trong cả hai, không chỉ một] hoặc hiệu [trong một chứ không phải cả hai]

Để tính toán công đoàn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
09

Để tính giao lộ

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
10

Để tìm sự khác biệt đơn giản

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
11

Và đối với sự khác biệt đối xứng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
12

Nhiều thành phần cần thiết cho các tính toán này được tích hợp sẵn trong PHP;

Để tìm sự kết hợp, bạn hợp nhất hai mảng để tạo một mảng khổng lồ với tất cả các giá trị. Nhưng

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
20 cho phép các giá trị trùng lặp khi hợp nhất hai mảng số, vì vậy bạn gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
682 để lọc chúng ra. Điều này có thể để lại khoảng cách giữa các mục vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
682 không thu gọn mảng. Tuy nhiên, đó không phải là vấn đề vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
59 xử lý các mảng được điền thưa thớt mà không gặp trở ngại nào

Hàm tính giao lộ được đặt tên đơn giản là

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
008 và bạn không cần thực hiện thêm công việc nào

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
009 trả về một mảng chứa tất cả các phần tử duy nhất trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
010 không có trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
011. Đây được gọi là sự khác biệt đơn giản

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
13

Mảng kết quả,

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
012 chứa
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
013 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
014 vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
009 phân biệt chữ hoa chữ thường. Nó không chứa
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
016 vì nó không xuất hiện trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
010

Để có được sự khác biệt ngược lại, hay nói cách khác, để tìm các yếu tố duy nhất trong

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
011 còn thiếu trong
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
010, hãy đảo ngược các đối số

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
14

Mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
020 chỉ chứa
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
016

Nếu bạn muốn áp dụng một chức năng hoặc bộ lọc khác cho

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
009, hãy sử dụng thuật toán tìm khác biệt của riêng bạn

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
15

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
42 đầu tiên xây dựng bảng tra cứu mảng kết hợp. Sau đó, bạn lặp qua
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
010 và nếu bạn không thể tìm thấy một mục trong tra cứu của mình, hãy thêm phần tử đó vào
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
025

Có thể nhanh hơn một chút khi kết hợp

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
009 với
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
79

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
16

Sự khác biệt đối xứng là những gì trong

$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
36 nhưng không phải trong
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
34 và những gì trong
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
34 nhưng không phải trong
$fruits[] = 'Apples';
$fruits[] = 'Bananas';
$fruits[] = 'Cantaloupes';
$fruits[] = 'Dates';
36

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
12

Khi đã nêu, thuật toán rất đơn giản. Bạn gọi

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
009 hai lần và tìm thấy hai sự khác biệt. Sau đó, bạn hợp nhất chúng lại với nhau thành một mảng. Không cần gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
682 vì bạn đã cố ý xây dựng các mảng này không có điểm chung

4. 24.  Làm cho một đối tượng hoạt động giống như một mảng

Bạn có một đối tượng, nhưng bạn muốn coi nó như một mảng. Điều này cho phép bạn kết hợp các lợi ích từ thiết kế hướng đối tượng với giao diện mảng quen thuộc

Triển khai giao diện

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
034 của SPLâs

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
18

Giao diện

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
034 cho phép bạn thao tác dữ liệu trong một đối tượng bằng cách sử dụng cùng một bộ quy ước mà bạn sử dụng cho mảng. Điều này cho phép bạn tận dụng các lợi ích của thiết kế hướng đối tượng, chẳng hạn như sử dụng phân cấp lớp hoặc triển khai các phương thức bổ sung trên đối tượng, nhưng vẫn cho phép mọi người tương tác với đối tượng bằng giao diện quen thuộc. Ngoài ra, nó cho phép bạn tạo âmảngâ lưu trữ dữ liệu của nó ở một vị trí bên ngoài, chẳng hạn như bộ nhớ dùng chung hoặc cơ sở dữ liệu

Việc triển khai

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
034 yêu cầu bốn phương pháp.
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
037, cho biết liệu một phần tử có được xác định hay không;

Ví dụ này lưu trữ dữ liệu cục bộ trong thuộc tính đối tượng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
19

Hàm tạo đối tượng khởi tạo thuộc tính

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
041 thành một mảng mới. Điều này cung cấp cho bạn một nơi để lưu trữ các khóa và giá trị của mảng của bạn. Thuộc tính đó được định nghĩa là
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
042, vì vậy mọi người chỉ có thể truy cập dữ liệu thông qua một trong các phương thức truy cập được xác định là một phần của giao diện

Bốn phương thức tiếp theo triển khai mọi thứ bạn cần để thao tác với một mảng. Vì

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
037 kiểm tra xem một phần tử mảng có được đặt hay không, nên phương thức trả về giá trị của
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
044

Các phương thức

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
038 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
039 tương tác với thuộc tính
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
041 như cách bạn thường sử dụng các tính năng đó với một mảng

Cuối cùng, phương thức

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
040 chỉ đơn giản gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84 trên phần tử. Không giống như ba phương thức còn lại, nó không trả về giá trị từ hoạt động của nó. Đó là vì
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
84 là một câu lệnh, không phải hàm và không trả về giá trị

Bây giờ bạn có thể khởi tạo một thể hiện của

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
051 và thao tác với nó giống như một mảng

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
20

Mỗi thao tác gọi một trong các phương thức của bạn. gán giá trị cho

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
052 kích hoạt
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
039, kiểm tra
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
054 gọi
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
037,
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
038 phát huy tác dụng khi bạn thực hiện phép so sánh
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
057 và
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
040 được gọi cho
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
059

Như bạn có thể thấy, sau tất cả những điều này, wabbit đã “chết”. â

4. 25. Một chương trình. In bảng HTML có cột theo chiều ngang

Chuyển đổi một mảng thành một bảng có cột theo chiều ngang sẽ đặt một số lượng phần tử cố định trong một hàng. Bộ đầu tiên đi vào hàng của bảng mở đầu, bộ thứ hai đi vào hàng tiếp theo, v.v. Cuối cùng, bạn đến hàng cuối cùng, nơi bạn có thể cần tùy ý đệm hàng bằng các ô dữ liệu bảng trống

Hàm

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
060, được hiển thị trong Ví dụ 4-4, cho phép bạn chỉ định một mảng và số lượng cột. Nó giả sử chiều rộng bảng của bạn là 100%, nhưng bạn có thể thay đổi biến
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
061 để thay đổi điều này

Ví dụ 4-4.  pc_grid_horizontal[]

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
21

Hàm bắt đầu bằng cách tính chiều rộng của mỗi phần theo tỷ lệ phần trăm của tổng kích thước bảng. Tùy thuộc vào số lượng cột và kích thước tổng thể, tổng chiều rộng có thể không bằng ký hiệu định dạng kiểu

$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
062. Để có được
$fruits[0] = 'Apples';
$fruits[1] = 'Bananas';
$fruits[2] = 'Cantaloupes';
$fruits[3] = 'Dates';
063 theo nghĩa đen cần thiết cho

Làm cách nào để xáo trộn mảng kết hợp trong PHP?

hàm php shuffle_assoc[$my_array] { $keys = array_keys[$my_array];

Hàm PHP array_keys[] dùng để làm gì?

Mảng_keys[] là một hàm tích hợp sẵn trong PHP và được sử dụng để trả về tất cả các khóa của và mảng hoặc tập hợp con của các khóa. Parameters: The function takes three parameters out of which one is mandatory and other two are optional.

Khóa trong mảng kết hợp trong PHP là gì?

Ví dụ. Trong mảng liên kết trong PHP, hàm keys[] của mảng được dùng để tìm các chỉ số có tên được cung cấp cho chúng và hàm đếm[] được dùng để .

Hàm nào được sử dụng để sắp xếp các giá trị trong mảng và giữ nguyên các khóa?

Hàm ksort[] sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo khóa. Mẹo. Sử dụng hàm krsort[] để sắp xếp một mảng kết hợp theo thứ tự giảm dần, theo khóa.

Chủ Đề