Chúng tôi yêu thích Pluralsight vì nó có hàng nghìn nội dung khóa học chất lượng cao và học phí cực kỳ phải chăng. Bạn không phải trả tiền cho các khóa học cá nhân. Đó là một thành viên hàng tháng thực sự nhỏ và bạn có quyền truy cập vào toàn bộ danh mục. Bạn có thể theo dõi và xem xét tất cả tiến trình của mình và cũng có thể nhận được các chứng chỉ bổ sung
khóa học
- Mẫu thiết kế PHP
- PHP. Bức tranh lớn
- PHP8. Bảo mật ứng dụng web
- PHP hiệu suất cao
- PHP hướng đối tượng
Con đường học tập
- Nguyên tắc cơ bản về phát triển PHP
Bản dùng thử miễn phí của Pluralsight
Tò mò về Pluralsight nhưng chưa sẵn sàng cam kết? . Chúng tôi đã có thể cho bạn dùng thử miễn phí để lái thử và xem tất cả các khóa học của họ. Click vào liên kết dưới đây
Dùng thử miễn phí Pluralsight trong 7 ngày
Giới thiệu
Bài này viết về cách đếm giá trị trong mảng đa chiều PHP. Nói cách khác, tìm tần số của các giá trị lặp lại trong một mảng nhiều chiều. Cho đến nay, chúng ta đã thấy rằng mối quan tâm chính trong mảng đa chiều là sự lồng ghép hoặc mức độ sâu. Một nguyên tắc chung là tránh cách tiếp cận lặp đi lặp lại nếu mức tối đa vượt quá hai hoặc ba
Chúng tôi đã giải thích lý do tại một trong những bài viết mà chúng tôi đã phân biệt cách tiếp cận iterative và recursive. Ở đây chúng ta sẽ sử dụng cả hai cách tiếp cận này và một số hàm tích hợp trong ngữ cảnh của các giá trị đếm PHP trong mảng đa chiều. Vì vậy, hãy chuyển sang tùy chọn đầu tiên
Đếm giá trị trong mảng đa chiều PHP – Phương pháp lặp
iterative approach sử dụng các trình lặp, vòng lặp để truy cập mảng. Vòng lặp foreach trong PHP rất hữu ích khi lặp qua một mảng và có thể là một lựa chọn tốt nếu mảng đa chiều có tối đa ba cấp độ, như đã đề cập ở trên. Hãy xem một ví dụ
Thí dụ
Chúng tôi có một mảng students_electives chứa tên sinh viên làm khóa và mảng để lưu thông tin về môn học tự chọn của họ. Mảng chỉ có hai cấp độ và đó là lý do tại sao đây là trường hợp sử dụng tốt cho cách tiếp cận lặp lại
$students_electives = [ "Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"], "Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"], "Catheline" => ["ID"=>"1003", "Elective"=>"Economics"], "Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"], "Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"], "Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"], "Ira" => ["ID"=>"1008","Elective"=>"Mathematics"], "Jessica" => ["ID"=>"1009","Elective"=>"Economics"], "Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"], "Liam" => ["ID"=>"1011","Elective"=>"Mathematics"], ];Vì vậy, mục tiêu là tìm tần số của các môn học tự chọn. Hãy cùng tìm hiểu
$resultant = []; foreach($students_electives as $student=>$elective) { //Check if a key has been created for the subject if(!isset($resultant[$elective["Elective"]])) { //Initiate the count to one for the newly created subject. $resultant[$elective["Elective"]] = 1; } else { //If a subject reoccurs then increase the count by one. $resultant[$elective["Elective"]] += 1; } } print_r($resultant); /* OUTPUT Array ( [Computer Science] => 4 [Electronics] => 2 [Economics] => 2 [Mathematics] => 3 [Chemistry] => 1 ) */thì đấy. Mã đếm các giá trị tự chọn định kỳ bằng cách tăng khóa tương ứng được tạo trong mảng kết quả. Ngoài ra, hãy quan sát rằng chúng ta đã truy cập trực tiếp vào mảng ở cấp độ hai bằng cách sử dụng khóa/chỉ mục. Truy cập trực tiếp có thể không thực hiện được mọi lúc và đặc biệt nếu bạn đã phân tích cú pháp phản hồi XML hoặc JSON từ máy chủ
Vì vậy, hãy luôn đảm bảo tránh nhiều hơn ba vòng lặp lồng nhau. Ngoài ra, có cách tiếp cận đệ quy. Hãy cũng kiểm tra xem.
Tùy chọn # 2 Phương pháp đệ quy
Vì vậy, trước khi chuyển sang ví dụ, hãy thêm một môn tự chọn khác vào mỗi bản ghi sinh viên trong mảng. Đó chỉ là làm cho mảng được lồng vào nhau hơn và có ba cấp độ. Cách tiếp cận đệ quy là lý tưởng để đào sâu vào một mảng đa chiều
Đối với phương pháp recursive, chúng ta có thể sử dụng hàm $students_electives = [
"Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"],
"Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"],
"Catheline" => ["ID"=>"1003", "Elective"=>"Economics"],
"Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"],
"Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"],
"Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"],
"Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"],
"Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"],
"Ira" => ["ID"=>"1008","Elective"=>"Mathematics"],
"Jessica" => ["ID"=>"1009","Elective"=>"Economics"],
"Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"],
"Liam" => ["ID"=>"1011","Elective"=>"Mathematics"],
];
1. Hãy nhớ rằng chức năng này chỉ truy cập các nút lá. May mắn thay, các môn tự chọn là các nút lá trong mảng students_electives. Đó là lý do tại sao sử dụng chức năng này tốt hơn là viết một chức năng của riêng chúng tôi
Thí dụ
$resultant = []; array_walk_recursive($students_electives,function($value,$key) use (&$resultant){ if(!is_numeric($value)) { //Initiate the count to one for the newly created subject. if(!isset($resultant[$value])) { $resultant[$value] = 1; } //If a subject reoccurs then increase the count by one. else { $resultant[$value] += 1; } } },$resultant); print_r($resultant); /* OUTPUT Array ( [Computer Science] => 4 [Electronics] => 3 [Mathematics] => 7 [Economics] => 3 [Chemistry] => 3 [Biology] => 1 [Digital Logic Design] => 3 ) */Ví dụ hoạt động tốt. Chúng tôi có số lượng tần suất cho tất cả các đối tượng và chúng tôi nhận được điều này bằng cách chỉ gọi một hàm. Vì vậy, nó là một phiên bản tái cấu trúc của những gì chúng ta đã thấy trước đó. Một điều cần lưu ý là chúng tôi đã giữ _________2 kiểm tra trong cuộc gọi lại. Đó là để lọc ra Id vì chúng là các nút lá và được chọn bởi hàm array_walk_recursive trong khi PHP đếm các giá trị trong mảng đa chiều
Tiếp theo, hãy xem một cách tiếp cận khác để đếm các giá trị trong mảng đa chiều PHP
Tùy chọn #3 – Đếm giá trị trong mảng đa chiều PHP – Các hàm tích hợp
Ví dụ mà chúng ta sẽ thấy ở đây là một ví dụ đơn giản mạnh mẽ tương đương với những gì chúng ta đã thấy trong các ví dụ trước. Chúng tôi đã sử dụng một chuỗi các cuộc gọi đến một số chức năng tích hợp. Vì vậy, hãy xem ví dụ trước và sau đó chia nhỏ nó để rõ ràng
Thí dụ
print_r(array_count_values(array_merge(...array_column($students_electives,"Elective")))); /* OUTPUT Array ( [Computer Science] => 4 [Electronics] => 3 [Mathematics] => 7 [Economics] => 3 [Chemistry] => 3 [Biology] => 1 [Digital Logic Design] => 3 ) */Phá vỡ
- $students_electives = [
"Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"],
"Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"],
"Catheline" => ["ID"=>"1003", "Elective"=>"Economics"],
"Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"],
"Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"],
"Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"],
"Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"],
"Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"],
"Ira" => ["ID"=>"1008","Elective"=>"Mathematics"],
"Jessica" => ["ID"=>"1009","Elective"=>"Economics"],
"Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"],
"Liam" => ["ID"=>"1011","Elective"=>"Mathematics"],
];
3 – Thống nhất cột đã chỉ định trong một mảng. Vì vậy, các môn tự chọn của tất cả các sinh viên được giữ trong một mảng
- $students_electives = [ "Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"], "Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"], "Catheline" => ["ID"=>"1003", "Elective"=>"Economics"], "Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"], "Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"], "Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"], "Ira" => ["ID"=>"1008","Elective"=>"Mathematics"], "Jessica" => ["ID"=>"1009","Elective"=>"Economics"], "Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"], "Liam" => ["ID"=>"1011","Elective"=>"Mathematics"], ]; 4 – Hàm này gộp mảng nhận được từ array_column thành mảng một chiều
- $students_electives = [ "Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"], "Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"], "Catheline" => ["ID"=>"1003", "Elective"=>"Economics"], "Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"], "Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"], "Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"], "Ira" => ["ID"=>"1008","Elective"=>"Mathematics"], "Jessica" => ["ID"=>"1009","Elective"=>"Economics"], "Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"], "Liam" => ["ID"=>"1011","Elective"=>"Mathematics"], ]; 5 – Hàm này sau đó đếm tần suất của các giá trị
Lưu ý … trước array_column. Tính năng này là$students_electives = [ "Andy" => ["ID"=>"1001", "Elective"=>"Computer Science"], "Benjamin" => ["ID"=>"1002", "Elective"=>"Electronics"], "Catheline" => ["ID"=>"1003", "Elective"=>"Economics"], "Dexter" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Eion" => ["ID"=>"1004", "Elective"=>"Computer Science"], "Franklin" => ["ID"=>"1005", "Elective"=>"Mathematics"], "Gina" => ["ID"=>"1006", "Elective"=>"Chemistry"], "Hudson" => ["ID"=>"1007", "Elective"=>"Electronics"], "Ira" => ["ID"=>"1008","Elective"=>"Mathematics"], "Jessica" => ["ID"=>"1009","Elective"=>"Economics"], "Kelvin" => ["ID"=>"1010","Elective"=>"Computer Science"], "Liam" => ["ID"=>"1011","Elective"=>"Mathematics"], ]; 6 và nó hiện ra các mảng con. Do đó, các mảng này chuyển sang array_merge trong ví dụ. Nếu bạn cần rõ ràng hơn, hãy thử ví dụ và in kết quả của các chức năng này ra bàn điều khiển cùng một lúc để xem quá trình chuyển đổi trong quá trình thực hiện
Phần kết luận
Đó là nó cho bài viết này. Chúng ta đã thấy ba tùy chọn khác nhau liên quan đến giá trị đếm PHP trong mảng đa chiều. Đầu tiên là cách tiếp cận lặp, tiếp theo là cách tiếp cận đệ quy. Cuối cùng, chúng tôi đã khám phá cách xếp chồng một số hàm tích hợp có liên quan để đếm các giá trị trong mảng. Chúng tôi hy vọng bạn thích nó. Hãy theo dõi các bài viết và hướng dẫn PHP thú vị và nhiều thông tin hơn
Bài viết liên quan
- ← Cách tìm và loại bỏ các giá trị trùng lặp trong mảng PHP
- Tìm giá trị trong một mảng PHP đa chiều. Ví dụ về mã 2023 →
Viết mã tốt hơn nhanh hơn
Nhấp vào đây để nhận các bí mật hàng đầu 'Trở thành Rockstar PHP Dev trong 7 ngày' của chúng tôi được gửi đến hộp thư đến của bạn
đăng ký
Stephen Phép Lạ
Chào. Tôi hy vọng bạn thích bài viết này. Tôi đã phát triển các trang web và phần mềm một cách chuyên nghiệp trong hơn 20 năm. Tôi bắt đầu FuelingPHP như một cách để đền đáp lại cộng đồng nguồn mở đã giúp tôi có thể sống thoải mái khi xây dựng những thứ tôi yêu thích