Thêm giá trị vào mảng php. Thêm một phần tử vào đầu mảng. Thêm và xóa các phần tử mảng
Thêm các phần tử vào một mảng
Nếu mảng tồn tại, bạn có thể thêm các phần tử bổ sung vào nó. Việc này được thực hiện trực tiếp bằng cách sử dụng toán tử gán (dấu bằng) giống như cách gán giá trị cho một chuỗi hoặc số. Trong trường hợp này, bạn không phải chỉ định khóa của phần tử được thêm vào, nhưng trong mọi trường hợp, cần có dấu ngoặc vuông khi truy cập vào mảng. Thêm hai phần tử mới vào $List, chúng ta sẽ viết:
$List = "lê";
$List = "cà chua";
Nếu khóa không được chỉ định, mỗi phần tử sẽ được thêm vào mảng hiện có và được lập chỉ mục theo số thứ tự tiếp theo. Nếu chúng ta thêm các phần tử mới vào mảng từ phần trước, có các phần tử có chỉ mục 1, 2 và 3, thì quả lê sẽ có chỉ mục 4 và cà chua sẽ có chỉ mục 5. Khi bạn chỉ định rõ ràng một chỉ mục và giá trị của nó là đã tồn tại, giá trị hiện tại tại vị trí đó sẽ bị mất và được thay thế bằng giá trị mới:
$List = "lê";
$List = "cà chua";
Bây giờ giá trị của phần tử có chỉ số 4 là “tomatoes” và phần tử “oranges” không còn ở đó nữa. Tôi khuyên bạn không nên chỉ định khóa khi thêm phần tử vào mảng, trừ khi bạn đặc biệt muốn ghi đè bất kỳ dữ liệu hiện có nào. Tuy nhiên, nếu các chuỗi được sử dụng làm chỉ mục thì các khóa phải được chỉ định để không làm mất giá trị.
Chúng tôi sẽ cố gắng thêm các phần tử mới vào mảng bằng cách viết lại tập lệnh sups.php. Đầu tiên bằng cách in yếu tố nguồn mảng, rồi đến mảng ban đầu cùng với mảng được thêm vào, chúng ta có thể dễ dàng thấy những thay đổi đã xảy ra. Giống như bạn có thể tìm ra độ dài của một chuỗi (số ký tự chứa trong chuỗi) bằng hàm strlen(), bạn cũng có thể dễ dàng xác định số phần tử trong một mảng bằng hàm count():
$HowMany = count($Array);
- Mở tệp súp.php trong soạn thảo văn bản.
- Sau khi khởi tạo mảng bằng hàm array(), hãy thêm mục sau: $HowMany = đếm ($Soups);
- Thêm ba phần tử bổ sung vào mảng. $Soups["Thứ Năm"] = "Mì gà";
- Đếm các phần tử trong mảng và in giá trị này. $HowManyNow = đếm($Soups);
- Lưu tập lệnh (Liệt kê 7.2), tải nó lên máy chủ và kiểm tra nó trong trình duyệt (Hình.).
print("Mảng chứa các phần tử $HowMany.
\N");
Hàm count() sẽ xác định có bao nhiêu phần tử trong mảng $Soups. Bằng cách gán giá trị này cho một biến, nó có thể được in ra.
$Soups["Thứ Sáu"] = "Cà chua";
$Soups["Saturday"] = "Kem bông cải xanh";
print("Mảng hiện chứa các phần tử $HowManyNow.
\N");
Liệt kê 7.2 Bạn có thể trực tiếp thêm từng phần tử vào một mảng bằng cách gán giá trị cho từng phần tử bằng toán tử thích hợp. Hàm count() có thể được sử dụng để tìm hiểu xem có bao nhiêu phần tử trong một mảng.
1
2
3
4
5 6 $Soups = mảng(
7 "Thứ Hai"=>"Súp Nghêu",
8 "Thứ Ba"=>"Ớt gà trắng",
9 "Thứ Tư"=>"Ăn chay");
11 print("Mảng chứa $HowMany
các phần tử.
\N");
12 $Soups["Thứ Năm"] = "Mì Gà";
13 $Soups["Thứ Sáu"] = "Cà chua";
14 $Soups["Saturday"] = "Kem của
Bông cải xanh";
15 $HowManyNow = count($Soups);
16 print("Mảng bây giờ chứa
Yếu tố $HowManyNow.
\N");
17 ?>
18
19
Xuất hiện trong PHP 4.0 tính năng mới, cho phép bạn thêm mảng này vào mảng khác. Hoạt động này cũng có thể được gọi là hợp nhất hoặc nối các mảng. Hàm array_merge() được gọi như sau:
$NewArray = array_merge($OneArray, $TwoArray);
Bạn có thể viết lại trang súp.php bằng chức năng này nếu bạn đang làm việc trên máy chủ có cài đặt PHP 4.0.
Hợp nhất hai mảng
- Mở tệp súp.php trong trình soạn thảo văn bản nếu nó chưa được mở.
- Sau khi khởi tạo mảng $Soups, hãy đếm các phần tử của nó và in kết quả. $HowMany = đếm ($Soups);
- Kết hợp hai mảng thành một. $TheSoups = array_merge($Soups, $Soups2);
- Đếm các phần tử của mảng mới và in kết quả. $HowMany3 = count($TheSoups);
- Đóng PHP và tài liệu HTML. ?>
- Lưu tệp (Liệt kê 7.3), tải nó lên máy chủ và kiểm tra nó trong trình duyệt (Hình.).
print("Mảng $Soups chứa các phần tử $HowMany.
\N");
- Tạo mảng thứ hai, đếm các phần tử của nó và in kết quả.
"Thứ Năm"=>"Mì gà",
"Thứ sáu"=>"Cà chua",
"Thứ bảy"=>"Kem bông cải xanh");
$HowMany2 = đếm($Soups2);
print("Mảng $Soups2 chứa các phần tử $HowMany2.
\N");
Đảm bảo rằng các mảng được sắp xếp theo thứ tự này ($Soups, sau đó là $Soups2), nghĩa là các phần tử của Thứ Năm và Thứ Sáu phải được thêm vào các phần tử của Thứ Hai của Thứ Tư chứ không phải ngược lại.
print("Mảng $TheSoups chứa
-$HowMany3 phần tử.
\N");
![](https://i0.wp.com/weblibrary.biz/bimages/php/img49.gif)
Liệt kê 7.3 Hàm Array_merge() là hàm mới. Đây là một trong nhiều tính năng bổ sung trong PHP 4.0 được thiết kế để hoạt động với mảng. Sử dụng mảng bạn có thể tiết kiệm rất nhiều thời gian.
1
2
3
4
5 6 $Soups = mảng!
7 "Thứ Hai"=>"Súp Nghêu",
"Thứ Ba"=>"Ớt gà trắng",
8 "Thứ Tư"=>"Ăn chay"
9);
10 $HowMany = count($Soups);
11 print("Mảng $Soups chứa các phần tử $HowMany.
\N");
12 $Soups2 = mảng(
13 "Thứ Năm"=>"Mì Gà",
14 "Thứ Sáu"=>"Cà Chua",
15 "Thứ bảy"=>"Kem bông cải xanh"
16); .
17 $HowMany2 = count($Soups2);
18 print ("Mảng $Soups2 chứa các phần tử $HowMany2.
\N");
19 $TbeSoupe = array_merge($Soups, $Soups2);
20 $HowMany3 = đếm ($TheSoups) ;
21 print ("Mảng $TheSoups chứa các phần tử .$HowMany3.
\N");
22 ?> "
23
24
Hãy cẩn thận khi thêm các phần tử trực tiếp vào một mảng. Việc này được thực hiện chính xác như sau: $Ar ray = "Add This"; iyai$Aggau = "Thêm cái này";, nhưng nó đúng như thế này: $Aggau = "Thêm cái này";. Nếu bạn quên đặt dấu ngoặc đơn, giá trị gia tăng sẽ phá hủy mảng hiện có, biến nó thành một chuỗi hoặc số đơn giản.
PHP 4.0 có một số hàm mới để làm việc với mảng. Không phải tất cả chúng đều được thảo luận trong cuốn sách. Tuy nhiên, thông tin đầy đủ về chủ đề này có trong sổ tay hướng dẫn sử dụng ngôn ngữ PHP, có thể tìm thấy trên trang web PHP. Hãy cẩn thận không sử dụng các tính năng mới chỉ có ở PHP 4.0 nếu máy chủ của bạn đang chạy PHP 3.x.
Có nhiều hàm và toán tử để chuyển đổi mảng trong PHP: Tổng hợp các hàm làm việc với mảng
Có một số cách để thêm một mảng vào một mảng bằng PHP và tất cả chúng đều có thể hữu ích trong một số trường hợp nhất định.
"Người điều hành +"
Đây là một cách đơn giản nhưng ngấm ngầm:
$c = $a + $b
Bằng cách này, chỉ những khóa chưa có trong mảng $a mới được thêm vào. Trong trường hợp này, các phần tử được thêm vào cuối mảng.
Nghĩa là, nếu khóa từ mảng $b không có trong mảng $a, thì một phần tử có khóa này sẽ được thêm vào mảng kết quả.
Nếu mảng $a đã chứa một phần tử có khóa như vậy thì giá trị của nó sẽ không thay đổi.
Nói cách khác, việc thay đổi vị trí của các số hạng sẽ làm thay đổi tổng: $a + $b != $b + $a - điều này đáng ghi nhớ.
Bây giờ đây là một ví dụ chi tiết hơn để minh họa điều này:
$arr1 = ["a" => 1, "b" => 2]; $arr2 = ["b" => 3, "c" => 4]; var_export($arr1 + $arr2); // mảng (// "a" => 1, // "b" => 2, // "c" => 4, //) var_export($arr2 + $arr1); // mảng (// "b" => 3, // "c" => 4, // "a" => 1, //)
hàm mảng_merge()
Bạn có thể sử dụng chức năng này như sau:
$kết quả = mảng_merge($arr1, $arr2)
Nó đặt lại các chỉ số số và thay thế các chỉ số chuỗi. Tuyệt vời để nối hai hoặc nhiều mảng với các chỉ mục số:
Nếu các mảng đầu vào có cùng khóa chuỗi thì mỗi giá trị tiếp theo sẽ thay thế giá trị trước đó. Tuy nhiên, nếu các mảng có khóa số giống nhau thì giá trị được đề cập cuối cùng sẽ không thay thế giá trị ban đầu mà sẽ được thêm vào cuối mảng.
hàm mảng_merge_recursive
Thực hiện tương tự như array_merge ngoại trừ việc nó đệ quy đi qua từng nhánh của mảng và thực hiện tương tự với các mảng con.
hàm array_replace()
Thay thế các phần tử mảng bằng các phần tử của mảng được truyền khác.
hàm array_replace_recursive()
Tương tự như array_replace nhưng xử lý tất cả các nhánh của mảng. Trợ giúp về array_replace_recursive.
Các tính năng khác
Có một số hàm hữu ích để làm việc với mảng trong PHP, bạn nên biết sự tồn tại của chúng. Bạn có thể đọc về họ tại liên kết:
ngày: 2010-07-09
Trước hết, hãy tạo một mảng. Giả sử có một dãy các quân bài riêng lẻ cùng chất (bích = s). Hãy gọi cho anh ấy thẻ var.
Thẻ Var = ["8s","9s","Ts","Js","Qs"]; // 5 phần tử (các quân bài giống nhau từ 8 đến nữ hoàng)
Như bạn có thể thấy, có 5 phần tử trong mảng của chúng ta, mỗi phần tử có chỉ mục duy nhất riêng. Hãy để chúng tôi nhắc bạn một lần nữa rằng việc lập chỉ mục các phần tử mảng bắt đầu từ 0, đừng quên điều này, tức là. trong ví dụ của chúng tôi, phần tử đầu tiên của mảng ("8s") là 0, phần tử cuối cùng ("Qs") là 4.
Thêm một phần tử vào cuối mảng
Biết rằng trong mảng của chúng tôi thẻ var chỉ có 5 phần tử và chỉ mục cuối cùng kết thúc bằng 4, khi đó chúng ta có thể thêm một phần tử mới vào mảng như thế này:
Thẻ Var = ["8s","9s","Ts","Js","Qs"]; // 5 phần tử (các quân bài cùng chất từ 8 đến quân hậu) quân bài = "Ks"; //thêm một phần tử mới vào cuối mảng, lúc này mảng có 6 phần tử
Khó khăn với cách tiếp cận này là nếu mảng chứa nhiều phần tử thì việc đếm chúng có thể rất bất tiện. Đối với những trường hợp như vậy, có một giải pháp đơn giản hơn - thuộc tính mảng chiều dài, xác định độ dài của mảng, tức là số phần tử trong mảng. Hãy xem một ví dụ:
Phóng! var cards = ["8s","9s","Ts","Js","Qs"]; // 5 phần tử (các quân bài cùng chất từ 8 đến quân hậu) các quân bài = "Ks"; /* thêm một phần tử mới vào mảng bằng thuộc tính chiều dài */ for(i = 0; iTrong dòng 4 của mã, chúng tôi đã thêm một mục trong biểu mẫu thẻ;. Mã này giống hệt nhau thẻ;, vì tài sản chiều dài, như đã đề cập ở trên, xác định số lượng tất cả các phần tử trong mảng. Nói cách khác, chúng ta không cần đếm các phần tử, thay vào đó chúng ta viết chính mảng đó, đặt dấu chấm và sử dụng từ khóa chiều dài. Ở dòng 7 chúng ta cũng áp dụng tính chất chiều dài- đầu tiên chúng ta xác định điểm bắt đầu của bộ đếm từ 0, sau đó có một điều kiện là chúng ta viết, nếu giá trị của bộ đếm nhỏ hơn độ dài của mảng thì chúng ta tăng bộ đếm lên một và thực thi mã trong dấu ngoặc nhọn ( trong phần thân vòng lặp), nơi chúng tôi hiển thị các phần tử mảng bằng cách sử dụng cảnh báo(), bạn có thể sử dụng document.write(). Nói cách khác, mọi thứ trông như thế này:
0 nhỏ hơn 6? Vâng, ít hơn. Chúng ta tăng bộ đếm lên 1 và thực thi mã trong thân vòng lặp
1 nhỏ hơn 6? Vâng, ít hơn. Chúng ta tăng bộ đếm lên 1 và thực thi mã trong thân vòng lặp
2 nhỏ hơn 6? Vâng, ít hơn. Chúng ta tăng bộ đếm lên 1 và thực thi mã trong thân vòng lặp
.....................................................
6 có nhỏ hơn 6 không? KHÔNG. Chu kỳ dừng lại.
phương thức đẩy()
Ngoài các phương pháp nêu trên, còn có một phương pháp xô(), nhờ đó chúng ta có thể thêm bất kỳ loại dữ liệu nào và thậm chí cả một biến vào cuối mảng. Trong trường hợp này, có thể có một số phần tử cùng một lúc, được viết cách nhau bằng dấu phẩy trong ngoặc đơn. Hãy xem một ví dụ:
Phóng! var cards = ["8s","9s","Ts","Js","Qs"]; // 5 phần tử (các quân bài cùng chất từ 8 đến quân hậu) cards.push("Ks","As"); /* thêm phần tử mới vào mảng bằng phương thức push() */ for(i = 0; iThêm phần tử vào đầu mảng
phương thức unshift()
Nếu bạn cần thêm các phần tử vào đầu mảng, hãy sử dụng phương thức bỏ dịch chuyển. Nó hoạt động theo nguyên tắc tương tự như phương thức push().
Phóng! var cards = ["8s","9s","Ts","Js","Qs"]; // 5 phần tử (các quân bài cùng chất từ 8 đến quân hậu) cards.unshift("5s","6s","7s"); /* thêm phần tử mới vào mảng bằng phương thức unshift() */ for(i = 0; iTrong chương này:
Mảng là một loại biến đặc biệt lưu trữ nhiều phần tử dữ liệu. Mảng cho phép bạn truy cập riêng biệt bất kỳ phần tử cấu thành nào của nó (vì chúng được lưu trữ riêng bên trong mảng) và bạn cũng có thể sao chép hoặc xử lý toàn bộ mảng.
Mảng PHP không được định kiểu, nghĩa là các phần tử của mảng có thể thuộc bất kỳ kiểu nào và các phần tử khác nhau trong mảng có thể có các kiểu khác nhau. Ngoài ra, mảng PHP là động, có nghĩa là không cần khai báo kích thước cố định và có thể thêm các phần tử mới bất kỳ lúc nào.
Khái niệm cơ bản về mảng
Để làm việc với mảng, bạn cần học hai khái niệm mới: phần tử và chỉ mục. Các phần tử là các giá trị được lưu trữ trong một mảng; các giá trị có thể thuộc bất kỳ loại nào. Mỗi phần tử có thể được truy cập bằng chỉ mục duy nhất của nó. Chỉ mục có thể là số nguyên hoặc chuỗi.
Mảng có thể được chia thành hai loại: chỉ mục, trong đó chỉ một số nguyên được sử dụng làm giá trị chỉ mục và kết hợp, trong đó giá trị chỉ mục có thể là một chuỗi hoặc một số. Thông thường trong mảng kết hợp, chỉ mục được gọi là: “key”.
Mảng chỉ mục thường được gọi đơn giản là "mảng" và mảng kết hợp được gọi là "băm", "kết hợp" hoặc "từ điển".
Tạo một mảng
Có ba cách để tạo mảng trong PHP. Cách đầu tiên là tạo nó bằng hàm array() đặc biệt. Hàm lấy làm đối số bất kỳ số cặp khóa => giá trị nào được phân tách bằng dấu phẩy hoặc chỉ các giá trị cũng được phân tách bằng dấu phẩy. Nó trả về một mảng có thể được gán cho một biến.
Vì bạn không phải chỉ định khóa nên các giá trị có thể được thêm vào mảng mà không cần chỉ định khóa. Nếu khóa không được chỉ định, PHP sẽ sử dụng các chỉ mục số. Theo mặc định, các phần tử sẽ được đánh số bắt đầu từ 0. Mảng có chỉ mục số cho phép bạn chỉ cần thêm một phần tử và PHP sẽ tự động sử dụng giá trị khóa số nguyên lớn nhất trước đó tăng thêm 1.
Bạn cũng có thể chỉ định khóa cho từng phần tử:
"đĩa CD");
var_dump($my_array); ?> 8 Khi chạy ví dụ này, bạn có thể nhận thấy rằng phần tử cuối cùng ("d") đã được gán cho khóa 7 .
. Điều này xảy ra vì giá trị lớn nhất của khóa thuộc kiểu số nguyên trước nó
Bây giờ hãy xem việc tạo một mảng kết hợp bằng hàm array(). Mảng kết hợp được viết hơi khác một chút: để thêm một phần tử, định dạng khóa => giá trị được sử dụng.
"30", "Tháng 2" => "28/29 (29 xảy ra bốn năm một lần)", "Tháng 3" => "31", "Tháng 4" => "30", "Tháng 5" => "31", " Tháng Sáu" => "30", "Tháng 7" => "31", "Tháng 8" => "31", "Tháng 9" => "30", "Tháng 10" => "31", "Tháng 11" => " 30", "Tháng 12" => "31"); ?>
Với cách thụt lề mà bạn thấy trong ví dụ này, việc thêm các phần tử vào mảng sẽ dễ dàng hơn so với khi chúng được viết trên một dòng.
Bây giờ hãy xem cách thứ hai để tạo một mảng: sử dụng dấu ngoặc vuông, thay vì hàm array() đặc biệt:
"thanh", "thanh" => "foo"); // một cách khác để tạo mảng $my_array = ["foo" => "bar", "bar" => "foo"]; ?>
Không có sự khác biệt giữa các mảng này, ngoại trừ sự khác biệt về chính tả.
Xin lưu ý rằng trong PHP, mảng có thể chứa các khóa kiểu int và chuỗi cùng một lúc, tức là. PHP không phân biệt giữa mảng được lập chỉ mục và mảng kết hợp.
Lưu ý: Khi chọn tên cho một mảng, hãy cẩn thận không sử dụng tên giống với một biến khác vì chúng có chung một không gian tên. Việc tạo một biến có cùng tên với mảng hiện có sẽ xóa mảng đó mà không đưa ra bất kỳ cảnh báo nào.
Cách thứ ba để tạo mảng sẽ được thảo luận trong phần “Thêm và xóa các phần tử mảng”.
Chuyển đổi chỉ mục
Như đã đề cập ở đầu chương, khóa có thể là một trong hai loại: chuỗi hoặc số nguyên. Do đó, các khóa không khớp với một trong các loại này sẽ được chuyển đổi:
- Nếu khóa là một chuỗi chứa số, nó sẽ được chuyển thành kiểu số nguyên. Tuy nhiên, nếu số đó là số nguyên thập phân không hợp lệ, chẳng hạn như "09", thì số đó sẽ không được chuyển đổi thành số nguyên.
- Một số thực (số float) cũng sẽ được chuyển đổi thành số nguyên - phần phân số trong trường hợp này sẽ bị loại bỏ. Ví dụ: nếu giá trị khóa là 5,4 thì nó sẽ được hiểu là 5.
- Kiểu boolean (bool) cũng sẽ được chuyển đổi thành số nguyên. Ví dụ: nếu giá trị khóa là đúng thì nó sẽ được chuyển đổi thành 1 và khóa có giá trị sai sẽ được chuyển đổi thành 0 tương ứng.
- Nếu loại null được sử dụng, nó sẽ được chuyển thành chuỗi trống.
- Các đối tượng và mảng không thể được sử dụng làm khóa.
Nếu nhiều phần tử trong một khai báo mảng sử dụng cùng một khóa thì chỉ phần tử cuối cùng sẽ được sử dụng và tất cả các phần tử khác sẽ bị ghi đè.
"a", "1" => "b", // các phím được chuyển thành số 1 1.5 => "c", true => "d"); var_dump($my_array); ?>
Trong ví dụ đã cho, tất cả các khóa sẽ được chuyển đổi thành một, dựa trên điều này, mảng sẽ chỉ chứa một phần tử, nội dung của phần tử này sẽ bị ghi đè 3 lần, do đó giá trị của nó sẽ trở thành "d".
Truy cập các phần tử mảng
Các phần tử mảng được truy cập bằng dấu ngoặc vuông biểu thị chỉ mục/khóa: mảng.
"sữa", 2 => "foo"); echo $my_array["Sô-cô-la"], "
"; echo $my_array; ?>
Một cách khác để truy cập các phần tử mảng là sử dụng tham chiếu mảng trực tiếp.
Chào thế giới! ?>
Ví dụ này cho thấy rằng bạn có thể truy cập vào chỉ mục của một mảng được trả về do kết quả của một lệnh gọi hàm hoặc phương thức.
Thêm và xóa các phần tử mảng
Bây giờ bạn đã có các khái niệm cơ bản về mảng, hãy xem cách ghi giá trị vào mảng. Một mảng hiện có có thể được sửa đổi bằng cách đặt rõ ràng các giá trị trong đó. Điều này được thực hiện bằng cách gán giá trị cho một mảng.
Thao tác gán giá trị cho một phần tử mảng cũng giống như thao tác gán giá trị cho biến, ngoại trừ dấu ngoặc vuông () được thêm vào sau tên biến mảng. Chỉ mục/khóa của phần tử được biểu thị trong dấu ngoặc vuông. Nếu không có chỉ mục/khóa nào được chỉ định, PHP sẽ tự động chọn chỉ mục số nhỏ nhất chưa được sử dụng.
"không", 1 => "một"); $my_arr = "hai"; $my_arr = "ba"; var_dump($my_arr); // gán mà không chỉ định chỉ mục/khóa $my_arr = "four"; $my_arr = "năm"; tiếng vang "
"; var_dump($my_arr); ?>
Để thay đổi một giá trị cụ thể, bạn chỉ cần gán giá trị mới cho phần tử hiện có. Để xóa bất kỳ phần tử nào của mảng bằng chỉ mục/khóa của nó hoặc để xóa hoàn toàn chính mảng đó, hãy sử dụng hàm unset():
Lưu ý: Như đã đề cập ở trên, nếu một phần tử được thêm vào mảng mà không chỉ định khóa, PHP sẽ tự động sử dụng giá trị khóa số nguyên lớn nhất trước đó tăng thêm 1. Nếu chưa có chỉ mục số nguyên nào trong mảng thì khóa sẽ là 0 (số không).
Lưu ý rằng giá trị nguyên lớn nhất của khóa không nhất thiết phải tồn tại trong mảng vào lúc này, điều này có thể là do việc loại bỏ các phần tử mảng. Sau khi các phần tử đã bị xóa, mảng sẽ không được lập chỉ mục lại. Hãy lấy ví dụ sau để làm rõ hơn:
"; print_r($my_arr); // Thêm phần tử (lưu ý rằng khóa mới sẽ là 3 thay vì 0). $my_arr = 6; echo "
"; print_r($my_arr); // Lập chỉ mục lại: $my_arr = array_values($my_arr); $my_arr = 7; echo "
"; print_r($my_arr); ?>
Ví dụ này sử dụng hai hàm mới, print_r() và array_values(). Hàm array_values() trả về một mảng đã được lập chỉ mục (lập chỉ mục lại mảng được trả về với các chỉ mục số) và hàm print_r hoạt động giống như var_dump, nhưng xuất ra các mảng ở dạng dễ đọc hơn.
Bây giờ chúng ta có thể xem cách thứ ba để tạo mảng:
Ví dụ này cho thấy cách thứ ba để tạo một mảng. Nếu mảng $weekdays chưa được tạo thì nó sẽ được tạo. Tuy nhiên, kiểu tạo mảng này không được khuyến khích vì nếu biến $weekdays đã được tạo và chứa một giá trị, nó có thể gây ra kết quả không mong muốn từ tập lệnh.
Nếu bạn nghi ngờ liệu một biến có phải là mảng hay không, hãy sử dụng hàm là_mảng. Ví dụ: việc kiểm tra có thể được thực hiện như sau:
"; $no = "chuỗi thông thường"; echo is_array($no) ? "Mảng" : "Không phải là mảng"; ?>
Lặp qua một mảng
Toán tử vòng lặp foreach lặp tuần tự qua tất cả các phần tử của một mảng. Nó chỉ hoạt động với mảng và đối tượng, và nếu được sử dụng với các biến thuộc loại khác hoặc biến chưa được khởi tạo, sẽ phát sinh lỗi. Có hai loại cú pháp cho vòng lặp này. Loại cú pháp đầu tiên trông như thế này:
Foreach ($array as $value) (hướng dẫn)
Vòng lặp sẽ lặp qua mảng đã cho - $array (tên của mảng được thay thế cho $array). Ở mỗi lần lặp, giá trị của phần tử hiện tại được gán cho biến $value (bạn có thể chỉ định bất kỳ tên biến nào khác). Toán tử vòng lặp foreach rất thuận tiện vì nó lặp qua và đọc tất cả các phần tử của mảng cho đến phần tử cuối cùng. Nó cho phép bạn tránh phải liên tục ghi nhớ thực tế là việc lập chỉ mục mảng bắt đầu từ 0 và không bao giờ vượt quá mảng, điều này làm cho việc xây dựng vòng lặp rất thuận tiện và giúp tránh các lỗi phổ biến. Hãy xem nó hoạt động như thế nào với một ví dụ:
Loại cú pháp foreach thứ hai trông như thế này:
Foreach ($array as $key => $value) (hướng dẫn)
Khi sử dụng dạng cú pháp này, ở mỗi lần lặp, giá trị của khóa hiện tại được gán thêm cho biến $key (bạn có thể chỉ định bất kỳ tên biến nào khác):
$value) ( echo "[$key] => ", $value, "
";
}
?>
Để có thể thay đổi trực tiếp các phần tử mảng trong vòng lặp, bạn cần sử dụng tham chiếu. Trong trường hợp này, giá trị sẽ được gán theo tham chiếu.
Lưu ý: Tham chiếu đến phần tử cuối cùng của mảng vẫn giữ nguyên ngay cả sau khi câu lệnh foreach đã hoàn thành. Do đó, nên xóa nó bằng hàm unset() như trong ví dụ trên. Hãy xem điều gì sẽ xảy ra nếu chúng ta không sử dụng unset():"; foreach ($numbers as &$num) ( echo $num, " "; ) ?> Một điều cần lưu ý là tham chiếu chỉ có thể được sử dụng nếu mảng được lặp lại là một biến. Đoạn mã sau sẽ không hoạt động:
mảng_pad
Thêm một số phần tử vào mảng.
Cú pháp:
Mảng array_pad(đầu vào mảng, int pad_size, pad_value hỗn hợp)
Hàm array_pad() trả về một bản sao của mảng đầu vào mà các phần tử có pad_values đã được thêm vào, sao cho số phần tử trong mảng kết quả là pad_size.
Nếu pad_size>0 thì các phần tử sẽ được thêm vào cuối mảng và nếu<0 - то в начало.
Nếu giá trị của pad_size nhỏ hơn các phần tử trong mảng đầu vào ban đầu thì sẽ không có phép cộng nào xảy ra và hàm sẽ trả về mảng đầu vào ban đầu.
Ví dụ sử dụng hàm array_pad():
$arr = mảng(12, 10, 4);
$result = array_pad($arr, 5, 0);
// $result = mảng(12, 10, 4, 0, 0);
$result = array_pad($arr, -7, -1);
// $result = mảng(-1, -1, -1, -1, 12, 10, 4)
$result = array_pad($arr, 2, "noop");
// sẽ không thêm
mảng_map
Áp dụng hàm tùy chỉnh cho tất cả các phần tử của mảng đã chỉ định.
Cú pháp:
Mảng array_map(gọi lại hỗn hợp, mảng Array1 [, mảng ...])
Hàm array_map() trả về một mảng chứa các phần tử của tất cả các mảng được chỉ định sau khi được hàm gọi lại của người dùng xử lý.
Số lượng tham số được truyền cho hàm do người dùng xác định phải khớp với số mảng được truyền cho array_map().
Ví dụ về cách sử dụng hàm array_map(): Xử lý một mảng đơn
trả lại $n*$n*$n;
}
$a = mảng(1, 2, 3, 4, 5);
$b = array_map("khối lập phương", $a);
print_r($b);
?>
Mảng(
=> 1
=> 8
=> 27
=> 64
=> 125
)
Ví dụ về cách sử dụng hàm array_map(): Xử lý nhiều mảng
return "Số $n trong tiếng Tây Ban Nha là $m";
}
hàm map_Spanish($n, $m) (
mảng trả về ($n => $m);
}
$a = mảng(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("show_Spanish", $a, $b);
print_r($c);
$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>
Ví dụ đã cho sẽ xuất ra kết quả như sau:
// bản in của $cArray(
=> Số 1 trong tiếng Tây Ban Nha - uno
=> Số 2 trong tiếng Tây Ban Nha - dos
=> Số 3 trong tiếng Tây Ban Nha - tres
=> Số 4 trong tiếng Tây Ban Nha - cuatro
=> Số 5 trong tiếng Tây Ban Nha - cinco
)
// bản in của $dArray(
=> Mảng
=> uno
)
=> Mảng
=> nên làm
)
=> Mảng
=> tres
)
=> Mảng
=> cuatro
)
=> Mảng
=> rạp chiếu phim
)
Thông thường, hàm array_map() được sử dụng trên các mảng có cùng kích thước. Nếu các mảng có độ dài khác nhau thì những mảng nhỏ hơn sẽ được đệm bằng các phần tử có giá trị trống.
Cần lưu ý rằng nếu bạn chỉ định null thay vì tên của hàm xử lý, một mảng các mảng sẽ được tạo.
Ví dụ về cách sử dụng hàm array_map(): Tạo một mảng các mảng
$b = array("một", "hai", "ba", "bốn", "năm");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
Ví dụ đã cho sẽ xuất ra kết quả như sau:
Mảng(
=> Mảng
=> 1
=> một
=> uno
)
=> Mảng
=> 2
=> hai
=> nên làm
)
=> Mảng
=> 3
=> ba
=> tres
)
=> Mảng
=> 4
=> bốn
=> cuatro
)
=> Mảng
=> 5
=> năm
=> rạp chiếu phim
)
Hàm được hỗ trợ bởi PHP 4 >= 4.0.6, PHP 5
mảng_pop
Truy xuất và loại bỏ các phần tử cuối cùng của mảng.
Cú pháp:
Mảng_pop hỗn hợp(mảng arr);
Hàm array_pop() lấy phần tử cuối cùng ra khỏi mảng arr và trả về nó, sau đó loại bỏ nó. Với chức năng này, chúng ta có thể xây dựng các cấu trúc giống như ngăn xếp. Nếu mảng arr trống hoặc không phải là mảng thì hàm sẽ trả về chuỗi rỗng NULL.
Sau khi sử dụng hàm array_pop(), con trỏ mảng được đặt về đầu.
Ví dụ sử dụng hàm array_pop():
$fruits = array_pop($stack);
print_r($stack);
print_r($trái cây);
?>
Ví dụ sẽ xuất ra như sau:
Mảng(
=> màu cam
=> chuối
=> táo
)
Chức năng được hỗ trợ bởi PHP 4, PHP 5
mảng_push
Thêm một hoặc nhiều phần tử vào cuối mảng.
Cú pháp:
Int array_push(mảng mảng, hỗn hợp var1 [, hỗn hợp var2, ..])
Hàm array_push() thêm các phần tử var1, var2, v.v. vào mảng arr. Nó gán cho chúng các chỉ số số - giống hệt như đối với các tệp .
Nếu bạn chỉ cần thêm một phần tử, việc sử dụng toán tử này có thể dễ dàng hơn:
Mảng_push($Arr,1000); // gọi hàm$Arr=100; // điều tương tự, nhưng ngắn hơn
Ví dụ sử dụng hàm array_push():
array_push($stack, "táo", "mâm xôi");
print_r($stack);
?>
Ví dụ sẽ xuất ra như sau:
Mảng(
=> màu cam
=> chuối
=> táo
=> quả mâm xôi
)
Xin lưu ý rằng hàm array_push() xử lý mảng như một ngăn xếp và luôn thêm các phần tử vào cuối.
Chức năng được hỗ trợ bởi PHP 4, PHP 5
mảng_shift
Lấy và loại bỏ phần tử đầu tiên của mảng.
Cú pháp:
Mảng_shift hỗn hợp(mảng arr)
Hàm array_shift() lấy phần tử đầu tiên của mảng arr và trả về nó. Nó rất giống với array_pop(),
nhưng nó chỉ lấy phần tử đầu tiên chứ không lấy phần tử cuối cùng, đồng thời còn tạo ra sự “rung chuyển” khá mạnh toàn bộ mảng: suy cho cùng, khi trích xuất phần tử đầu tiên, bạn phải điều chỉnh lại toàn bộ chỉ số số của tất cả các phần tử còn lại , bởi vì tất cả các phần tử tiếp theo của mảng được dịch chuyển về phía trước một vị trí. Các phím mảng chuỗi không bị thay đổi.
Nếu mảng trống hoặc không phải là mảng thì hàm trả về NULL.
Sau khi sử dụng hàm này, con trỏ mảng sẽ được di chuyển về đầu.
Ví dụ về cách sử dụng hàm array_shift():
$fruit = array_shift($stack);
print_r($stack);
?>
Ví dụ này sẽ xuất ra như sau:
Mảng(
=> chuối
=> táo
=> quả mâm xôi
)
và biến $fruit sẽ có giá trị "cam"
Chức năng được hỗ trợ bởi PHP 4, PHP 5
mảng_unshift
Thêm một hoặc nhiều giá trị vào đầu mảng.
Cú pháp:
Int array_unshift(list arr, var1 hỗn hợp [, var2 hỗn hợp, ...])
Hàm array_unshift() thêm các giá trị var đã truyền vào đầu mảng arr. Thứ tự của các phần tử mới trong mảng được giữ nguyên. Tất cả các chỉ số kỹ thuật số của mảng sẽ được thay đổi để nó bắt đầu từ số 0. Tất cả các chỉ mục chuỗi của mảng không thay đổi.
Hàm trả về số phần tử mới trong mảng.
Ví dụ về cách sử dụng hàm array_unshift():
array_unshift($queue, "apple", "mâm xôi");
?>
Bây giờ biến $queue sẽ có các phần tử sau:
Mảng(
=> táo
=> quả mâm xôi
=> màu cam
=> chuối
)
Chức năng được hỗ trợ bởi PHP 4, PHP 5
mảng_unique
Loại bỏ các giá trị trùng lặp trong một mảng.
Cú pháp:
Mảng mảng_unique(mảng mảng)
Hàm array_unique() trả về một mảng bao gồm tất cả các giá trị duy nhất trong mảng arr cùng với các khóa của chúng, bằng cách loại bỏ tất cả các giá trị trùng lặp. Các cặp khóa=>giá trị đầu tiên gặp phải sẽ được đặt trong mảng kết quả. Các chỉ mục được bảo tồn.
Một ví dụ về cách sử dụng hàm array_unique():
"xanh", "đỏ", "b" =>
"xanh", "xanh", "đỏ");
print_r($kết quả);
?>
Ví dụ sẽ xuất ra như sau:
Mảng(
[a] => màu xanh lá cây
=> màu đỏ
=> màu xanh
)
Ví dụ về cách sử dụng hàm array_unique(): So sánh các kiểu dữ liệu
$result = array_unique($input);
var_dump($kết quả);
?>
Ví dụ sẽ xuất ra như sau:
Mảng(2) (
=> int(4)
=> chuỗi(1) "3"
}
Hàm được hỗ trợ bởi PHP 4 >= 4.0.1, PHP 5
mảng_chunk
Hàm chia mảng thành nhiều phần.
Cú pháp:
Mảng array_chunk(mảng arr, int size [, bool Serve_keys])
Hàm array_chunk() chia mảng mảng ban đầu thành nhiều mảng, độ dài của mảng được xác định bằng kích thước số. Nếu kích thước của mảng ban đầu không chia hết chính xác cho kích thước của các phần thì mảng cuối cùng sẽ có kích thước nhỏ hơn.
Hàm array_chunk() trả về một mảng nhiều chiều, các chỉ số của mảng này bắt đầu từ 0 đến số mảng kết quả và các giá trị là các mảng thu được sau khi chia tách.
Tham số prepare_keys tùy chọn chỉ định liệu các khóa của mảng ban đầu có được giữ nguyên hay không. Nếu tham số này sai (giá trị mặc định), thì chỉ số của mảng kết quả sẽ được chỉ định bằng các số bắt đầu từ 0. Nếu tham số đúng thì các khóa của mảng ban đầu sẽ được giữ nguyên.
Ví dụ về cách sử dụng hàm array_chunk():
$array = mảng("Phần tử thứ 1",
"yếu tố thứ 2"
"yếu tố thứ 3"
"yếu tố thứ 4"
"Yếu tố thứ 5");
print_r(array_chunk($array, 2));
print_r(array_chunk($array, 2, TRUE));
Ví dụ sẽ xuất ra như sau:
Mảng(
=> Mảng
=> Phần tử thứ 1
=> phần tử thứ 2
)
=> Mảng
=> phần tử thứ 3
=> phần tử thứ 4
)
=> Mảng
=> phần tử thứ 5
)
)
Mảng(
=> Mảng
=> Phần tử thứ 1
=> phần tử thứ 2
)
=> Mảng
=> phần tử thứ 3
=> phần tử thứ 4
)
=> Mảng
=> phần tử thứ 5
)
Chức năng được hỗ trợ bởi PHP 4 >= 4.2.0, PHP 5
mảng_điền
Hàm điền vào mảng với các giá trị cụ thể.
Cú pháp:
Mảng array_fill(int start_index, int num, giá trị hỗn hợp)
Hàm array_fill() trả về một mảng chứa các giá trị được chỉ định trong tham số value có kích thước num, bắt đầu bằng phần tử được chỉ định trong tham số start_index.
Ví dụ sử dụng array_diff_uassoc():
print_r($a);
?>
Ví dụ sẽ xuất ra như sau:
Mảng(
=> chuối
=> chuối
=> chuối
=> chuối
=> chuối
=> chuối
)
Chức năng được hỗ trợ bởi PHP 4 >= 4.2.0, PHP 5
mảng_filter
Hàm áp dụng bộ lọc cho một mảng bằng hàm tùy chỉnh.
Cú pháp:
Mảng array_filter(đầu vào mảng [, gọi lại gọi lại])
Hàm array_filter() trả về một mảng chứa các giá trị tìm thấy trong mảng đầu vào, được lọc theo kết quả của hàm callback do người dùng xác định.
Nếu mảng đầu vào là mảng kết hợp thì các chỉ số sẽ được giữ nguyên trong mảng kết quả.
Ví dụ về sử dụng hàm array_filter():
trả lại ($var % 2 == 1);
}
hàm chẵn($var) (
trở lại ($var % 2 == 0);
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = mảng(6, 7, 8, 9, 10, 11, 12);
echo "Lẻ: n";
print_r(array_filter($array1, "odd"));
echo "Chẵn: n";
t_r(array_filter($array2, "even"));
?>
Ví dụ sẽ xuất ra như sau:
Lẻ:Mảng(
[a] => 1
[c] => 3
[e] => 5
Chẵn:Mảng(
=> 6
=> 8
=> 10
=> 12
)
Điều đáng chú ý là thay vì tên của hàm lọc, bạn có thể chỉ định một mảng chứa tham chiếu đến đối tượng và tên của phương thức.
Cũng cần lưu ý rằng khi xử lý một mảng bằng hàm array_filter() thì không thể thay đổi: thêm, bớt phần tử hoặc reset mảng, bởi vì điều này có thể dẫn đến hoạt động không chính xác của chức năng.
Hàm được hỗ trợ bởi PHP 4 >= 4.0.6, PHP 5