Các mảng PHP được sử dụng khắp nơi. Việc thêm và thay đổi các giá trị nói chung là đơn giản.Bạn đang xem: Loại bỏ giá trị trùng lặp trong mảng php

Loại bỏ các phần tử mảng là một thao tác đặc biệt. Bạn có thể chỉ cần xóa mục, hoặc bạn có thể xóa và sử dụng nó. Sắc thái này mang đến những cơ hội tuyệt vời.

Đang xem: Xóa phần tử trùng nhau trong mảng php

Mảng PHP

PHP là một ngôn ngữ lập trình hiện đại, chức năng làm việc với các mảng được thực hiện ở mức độ cao. Người lập trình có thể sử dụng mảng thông thường và mảng kết hợp, thiết kế cấu trúc dữ liệu đa chiều và có bất kỳ kiểu giá trị nào dưới dạng phần tử mảng.

Có một bộ hàm được phát triển để làm việc với mảng, cấu trúc cú pháp đặc biệt. Có thể duyệt qua mảng theo thuật toán của riêng bạn và chỉ định các chức năng xử lý của riêng bạn.

Ví dụ về việc tạo và sử dụng một mảng

ScPrint là một chức năng trợ giúp. Nó ghi một cách đệ quy một mảng vào một chuỗi ký tự để chứng minh kết quả mà nó tạo ra.

Mảng $ aFruits được tạo theo cách thông thường: các giá trị được liệt kê, các chỉ số được gán tự động từ đầu. Dấu phẩy cuối cùng không liên quan và không dẫn đến phần tử trống khác được tạo.

Mảng $ aData được tạo trống, sau đó các giá trị được nhập vào đó. Ba – tự động và hai – với các chỉ số liên kết không ảnh hưởng đến việc đánh số tổng thể các giá trị. Do đó, các yếu tố “mận” và “đào” có các chỉ số tương ứng là “mới” và “tươi”.

Mảng $ aInfo là mảng đa chiều và liên kết.

Cách xóa một phần tử trong một mảng PHP được hiển thị bằng ba thao tác xóa.

Thao tác đầu tiên xóa phần tử thứ hai khỏi mảng $ aFruits, chỉ số của nó là 1. Cần lưu ý rằng các chỉ mục sau không bị dịch chuyển, có nghĩa là trong các thao tác tuần hoàn với một mảng như vậy, hãy kiểm tra sự tồn tại của một phần tử.

Thao tác thứ hai xóa các phần tử cuối cùng và đầu tiên trong mảng $ aData, thao tác này xác nhận rằng việc xóa không ảnh hưởng đến các chỉ mục và có thể xóa một số phần tử cùng một lúc.

Cái thứ ba loại bỏ một mảng trong một mảng và một phần tử trong một mảng được bao gồm trong một mảng khác.

Loại bỏ thông thường các phần tử – chưa đặt

Hàm chưa đặt sẽ loại bỏ. Không có vấn đề gì. Nó có thể chỉ là một biến hoặc một phần tử của mảng. Unset () được coi là một toán tử ngôn ngữ, không phải là một hàm. Toán tử này không trả về bất kỳ giá trị nào và những gì được truyền cho nó dưới dạng tham số, nó sẽ “hủy”. Biến hoặc mảng biến mất như thể nó không có ở đó.

*

Trong PHP, các phần tử trống của một mảng có thể bị xóa theo nhiều cách khác nhau, trên thực tế, phần tử nào được coi là phần tử trống phụ thuộc vào người lập trình. Tuy nhiên, không thông minh lắm nếu sử dụng nhiều tham số cho điều này trong câu lệnh unset (). Thực tế hơn là thực hiện các hoạt động nhóm trong các chức năng của nhóm.

Máy tính hiện đại rất nhanh và PHP rất nhanh. Nhưng đây không phải là lý do để tạo và xử lý hàng tấn thông tin với các thuật toán rườm rà, đây là lý do khách quan để tiếp cận quy trình loại bỏ các phần tử mảng theo cách lũy tiến.

Loại bỏ các phần tử bằng các phương thức nội tuyến

Trong PHP, bạn có thể xóa hàng loạt phần tử mảng trống bằng cách chuyển đổi mảng thành chuỗi và trả lại nó. Nhưng trường hợp này chỉ phù hợp với các phần tử thực sự trống, thiếu chỉ mục hoặc cho mục đích lập chỉ mục lại một mảng.

Khái niệm phần tử rỗng phụ thuộc vào nhiệm vụ. Thông thường, một phần tử mảng hiện có chứa thông tin cụ thể trở nên trống. Ví dụ: mảng theo dõi khách truy cập. Phần tử mảng chứa:

thời gian đến của du khách; chế độ hoạt động hiện tại; trang hoạt động; thời gian của hành động cuối cùng.

Nếu sự khác biệt giữa thời gian đến và thời gian của hành động cuối cùng là hơn 1 phút (hoặc một giá trị khác), chúng tôi có thể cho rằng khách hàng đã rời khỏi trang web. Hồ sơ về các khách hàng như vậy có thể bị xóa nếu nhiệm vụ là theo dõi danh sách khách truy cập đang hoạt động và không sử dụng các phương pháp nâng cao hơn bằng JavaScript.

Tuy nhiên, xử lý “nội tuyến” là tốt. Ví dụ: trong PHP, bạn có thể xóa các phần tử trùng lặp của một mảng như sau:

*

Cách nhanh chóng và giá cả phải chăng. Không nhất thiết phải sử dụng các ký tự “” để biểu thị từng phần tử, nhưng hãy nhớ rằng khi chuyển một mảng thành một chuỗi, bạn phải tuân thủ yêu cầu mỗi phần tử là duy nhất. Các ký hiệu cho đường viền nên được chọn có tính đến các ký hiệu được phép trong phần tử. Quy tắc không thể lay chuyển: mỗi phần tử mảng trong một chuỗi là duy nhất và có vị trí riêng (nếu không sẽ không có gì được trả về).

Phương pháp này thuận tiện hơn khi nhiệm vụ trong PHP là xóa một phần tử mảng theo giá trị. Bạn có thể sử dụng hàm array_flip và hoán đổi các giá trị và khóa ở các vị trí, sau đó bỏ đặt giá trị cổ điển. Bạn có thể sử dụng hàm array_search và tìm khóa của giá trị bạn muốn xóa. Nhưng phiên bản viết thường của giải pháp rõ ràng và đơn giản hơn.

PHP thực tế không giới hạn nhà phát triển trong bất cứ điều gì: không phải về số lượng kích thước, cũng không phải về kích thước của các phần tử. Không có ích gì khi tham gia vào việc này. Mỗi phần tử phải càng nhỏ càng tốt và số thứ nguyên nên có xu hướng là một.

Nếu số thứ nguyên của mảng nhiều hơn ba, đây là lý do chính đáng để xem xét lại quyết định. Nếu một phần tử mảng dài hơn 4000-8000 ký tự, thì sẽ có nghi ngờ về tính hợp lý của bức tranh dữ liệu đã xây dựng.

*

Ý kiến ​​này không xuất phát từ ngữ cảnh về chức năng của mảng PHP: loại bỏ một phần tử, thêm một đối tượng khác kiểu, thay đổi một thứ thành một thứ hoàn toàn khác. Sự đơn giản là chìa khóa thành công không chỉ trong cuộc sống, mà còn trong thuật toán. Chương trình sẽ hoạt động, và không ngạc nhiên với kích thước, quy mô và quy mô ý tưởng của nó. Kết quả là quan trọng, không phải là ý tưởng vĩ đại.

Là một ngôn ngữ lập trình hiện đại, PHP không đi qua đệ quy và ngăn xếp. Ý nghĩa của lập trình viên không thực sự quan trọng khi anh ta sử dụng hàm array_pop () trong PHP: xóa phần tử cuối cùng của một mảng hoặc chỉ đưa nó vào một số biến.

Nhưng cần lưu ý rằng trong ngữ cảnh này, hàm array_pop là từ lĩnh vực push & pop, tức là, đây là các công cụ ngăn xếp, không phải pop.

*

Thông thường ở đây nói không phải là “xóa”, mà là “trích xuất”. Các ngữ nghĩa là khác nhau đáng kể. Tuy nhiên, hàm array_shift () trong PHP: để loại bỏ phần tử đầu tiên của một mảng hoặc trích xuất nó – có một ý nghĩa khác. Ở đây, phần tử được tìm nạp vào một biến bên ngoài và nó sẽ không nằm trong mảng, nhưng các chỉ số được thay đổi.

Khi trích xuất phần tử đầu tiên khỏi mảng, tất cả các phần tử sau được dịch chuyển về phía trước, nhưng chỉ các chỉ số số thay đổi, các chỉ số chữ thường không thay đổi.

Xem thêm:

Xóa hoặc thay đổi: lịch sử giao dịch

Một biến là một quá khứ rất xa, một mảng là một thời gian dài trước đây, một đối tượng là ngày hôm qua. Lập trình hướng đối tượng vẫn đang được nói đến, nhưng không có gì được sử dụng tối đa. Đó là một trường hợp hiếm hoi khi các giải pháp hời hợt đã trở thành chủ đề của các quyết định nhiệt tình và “tinh vi” trong sức nặng của các hệ thống quản lý địa điểm “cơ thể” (CMS).

*

Quy tắc khách quan: không quan trọng số lượng mã, mà là chất lượng của nó! Nhưng chưa có CMS hiện đại nào chú ý đến quy tắc này. Các tác giả của nó tin rằng họ đang làm điều đúng đắn và biết họ đang làm gì.

Kết quả:

lập trình viên trình độ cao; cần cài đặt; đưa ra các yêu cầu đối với lưu trữ; gây khó khăn khi chuyển sang hosting khác; thực sự chậm lại trong công việc và điều hành.

Các lập trình viên đã hướng tới khái niệm rollback trong một thời gian rất dài, lập trình hiện đại không thể tưởng tượng được việc tạo ra phần mềm mà không có hai chức năng:

Hoàn tác; làm lại.

Bản chất con người không chỉ mắc sai lầm, mà trong bất kỳ tình huống nào cũng cần phải có sự lùi bước. Trong các phương tiện lập trình Internet hiện đại cho đến ngày nay, khoảnh khắc này không những không còn thích hợp, mà còn được sử dụng ở quy mô rất hạn chế.

Các hoạt động PHP trên một mảng: xóa một phần tử, thay đổi kiểu của nó hoặc thêm một cái gì đó mới – là điều dễ hiểu. Nhưng trước khi có các biến, sau đó là mảng, sau đó là các đối tượng. Không có lý do gì để nghĩ rằng một mảng chỉ là một biến theo thời gian?

Mảng là một cấu trúc dữ liệu theo thời gian. Không có ngôn ngữ nào cho đến ngày nay coi thời gian là một yếu tố trong cú pháp. Chúng ta thậm chí không cần phải nói về ngữ nghĩa: từ thời cổ đại cho đến ngày nay, lập trình viên và người dùng chỉ hiểu các tệp và thư mục. Ví dụ, trong PHP, không gian tên đã đạt đến mức phát triển tối đa được phản ánh trong cấu trúc của các thư mục và tệp.

Trong bối cảnh này, các hành động phổ biến trong PHP trên một mảng: xóa một phần tử, thay đổi hoặc thêm – yêu cầu các hành động bổ sung từ lập trình viên. Bạn có thể để mọi thứ như nó vốn có, và nó sẽ diễn ra như mọi khi. Bạn có thể xem xét từng thao tác trên dữ liệu và ghi lại đầy đủ, tạo và lưu trữ lịch sử hoạt động.

Đây sẽ là một cấp độ công việc hoàn toàn khác và chất lượng kết quả hoàn toàn tốt hơn.

Reg.ru: tên miền và lưu trữ

Nhà đăng ký và nhà cung cấp dịch vụ lưu trữ lớn nhất ở Nga.

Hơn 2 triệu tên miền được cung cấp dịch vụ.

Quảng cáo, thư cho miền, giải pháp kinh doanh.

Hơn 700 nghìn khách hàng trên khắp thế giới đã lựa chọn.

Khung Bootstrap: bố cục đáp ứng nhanh

Video hướng dẫn từng bước về kiến ​​thức cơ bản của bố cục đáp ứng trong khung Bootstrap.

Học cách sắp chữ một cách dễ dàng, nhanh chóng và hiệu quả bằng cách sử dụng một công cụ mạnh mẽ và thiết thực.

Bố trí để đặt hàng và được thanh toán.

* Di chuột để tạm dừng cuộn.

Lùi về phía trước

PHP: Loại bỏ các phần tử mảng

Chúng ta đang phải đối mặt với một nhiệm vụ có vẻ tầm thường: loại bỏ một phần tử mảng. Hoặc một số mặt hàng.

Tuy nhiên, đối với tất cả sự đơn giản của nó, nó có các tùy chọn không hoàn toàn rõ ràng và đáng để biết nếu bạn muốn tiến xa hơn một chút trong PHP ngoài “Hello, world!” 🙂

Hãy bắt đầu với chính cơ sở: để loại bỏ một phần tử, bạn cần sử dụng hàm unset ():

Unset ($ mảng); unset ($ array );

Unset ($ mảng, $ mảng); unset ($ array , $ array );

Câu hỏi hợp lý tiếp theo là làm thế nào để loại bỏ nhiều phần tử theo sau nhau (tức là liền kề)? Để loại bỏ nhiều phần tử liền kề, hãy sử dụng hàm array_splice ():

Array_splice ($ array, $ offset, $ length);

Xin lưu ý rằng khi bạn sử dụng các tính năng này, tất cả các tham chiếu đến các mục này sẽ biến mất. Nếu bạn muốn để lại khóa trong mảng nhưng liên kết nó với một giá trị trống, hãy gán một chuỗi trống cho phần tử bạn muốn:

$ array = $ array = “”;

Điều quan trọng là phải hiểu rằng chức năng unset () loại bỏ một phần tử, trong khi gán “” cho một phần tử không xóa nó, nhưng có nghĩa là giá trị của nó trở thành một chuỗi rỗng.

Nếu bạn đang làm việc với các con số, có lẽ tốt nhất là kết hợp giá trị 0 với một khóa như vậy.

Ví dụ: nếu một công ty đã ngừng sản xuất các bộ phận cho mẫu HBL-568, thì có thể thực hiện thay đổi đối với mảng các bộ phận:

Chưa đặt ($ products );

Nếu bộ phận HBL-568 chỉ tạm thời không có trong kho và dự kiến ​​sẽ đến từ nhà máy, thì tốt hơn là làm theo cách khác:

$ sản phẩm = 0;

Điểm tiếp theo cần hiểu là khi bạn gọi hàm unset ()đối với một phần tử mảng, PHP điều chỉnh mảng để vòng lặp vẫn hoạt động chính xác.

Nói cách khác, mảng không được nén để lấp đầy các “lỗ hổng” kết quả. Về cơ bản, điều này có nghĩa là tất cả các mảng đều có liên quan, ngay cả khi thoạt nhìn chúng có vẻ là số. Hãy xem các ví dụ rõ ràng để minh họa hành vi này:

// Tạo mảng “số” $ animal = array (“kiến”, “ong”, “mèo”, “chó”, “nai sừng tấm”, “cáo”); in $ động vật; // In “ong” print $ animal; // In số “mèo” ($ động vật); // Trả về 6 // unset () unset ($ động vật); // Loại bỏ phần tử $ animal = “bee” print $ animal; // Không in gì và báo lỗi E_NOTICE print $ animal; // In số lượng “cat” ($ động vật); // Trả về 5 trong khi phần tử $ mảng vẫn ở nguyên vị trí và chứa “fox” // Thêm phần tử mới $ animal = “gnu”; // Thêm một phần tử mới print $ animal; // Không in được gì, cũng xuất hiện lỗi E_NOTICE print $ animal; // In số “gnu” ($ động vật); // Trả về 6 // Gán “” (chuỗi trống) $ animal = “”; // Đặt thành “chuỗi rỗng” print $ animal; // In “” count ($ động vật); // Trả về 6, tức là tính đến phần tử trống của mảng khi đếm

Để điều hướng đến một mảng số đông dân cư, hãy sử dụng hàm giá_trị_mảng ():

$ động vật = array_values ​​($ động vật);

Ngoài ra, hàm array_splice () tự động lập chỉ mục lại các mảng để loại bỏ các “lỗ hổng”:

// Tạo mảng “số” $ animal = array (“kiến”, “ong”, “mèo”, “chó”, “nai sừng tấm”, “cáo”); array_splice ($ động vật, 2, 2); print_r ($ động vật);

Ở đầu ra, chúng tôi nhận được:

Mảng (=> kiến ​​=> ong ​​=> nai sừng tấm => cáo)

Cơ hội như vậy có thể có ích ở đâu?

Và cuối cùng, để xóa an toàn phần tử đầu tiên hoặc cuối cùng khỏi một mảng, hãy sử dụng các hàm array_shift () và array_pop () tương ứng.

Mọi thứ đều rất đơn giản với họ:

$ stack = array (“cam”, “chuối”, “táo”, “mâm xôi”); $ fruit = array_shift ($ stack); print_r ($ stack);

Kết quả của việc thực thi đoạn mã trên, chúng ta sẽ nhận được kết quả sau:

Mảng (=> chuối => táo => mâm xôi)

Để loại bỏ phần tử cuối cùng, hãy sử dụng hàm array_pop ():

$ stack = array (“cam”, “chuối”, “táo”, “mâm xôi”); $ fruit = array_pop ($ stack); print_r ($ stack);

Đầu ra sẽ là bản in sau của mảng:

Mảng (=> cam => chuối => táo)

Đó là tất cả. Chúng tôi đã trình bày những điểm chính của việc xóa các phần tử mảng trong PHP. Nếu có bất cứ điều gì, tài liệu chính thức luôn hữu ích.

Bạn có thích tài liệu và muốn cảm ơn bạn? Chỉ cần chia sẻ với bạn bè và đồng nghiệp của bạn!

PHP đầy hứa hẹn và hiện đại: cú pháp chất lượng cao và khả năng tạo ngữ nghĩa vượt quá những gì được phép. Việc thực hiện các ý tưởng của lập trình hướng đối tượng và tự do thay đổi kiểu của một biến biến những tưởng tượng hoang đường nhất trở thành hiện thực.

Mảng là một công trình xây dựng cổ xưa và những mảng liên kết mang tính chất tôn vinh thời đại hơn là yêu cầu của thực tiễn. Mặc dù có đủ số lượng tác vụ liên quan đến việc tạo tập hợp dữ liệu không có nội dung xác định trước (số, giá trị, loại và chỉ số), có sẵn để xem và sử dụng trong các vòng lặp. Phần tử cuối cùng của mảng có sẵn với bất kỳ phương pháp tạo. Mảng – thông thường và liên kết – cho phép bạn tạo danh sách, nhưng trong cú pháp PHP bình thường, điều này có giới hạn sử dụng.

Giá trị thực của mảng

Nếu chúng ta tóm tắt từ các chỉ số và sử dụng cấu trúc

$ arData = new scField (); // scNumber, scString, scParagraph, …

Xem thêm: Thực Đơn Yến Mạch Giảm Cân Bằng Yến Mạch Trong 1 Tuần, Trào Lưu Cách Giảm Cân Bằng Yến Mạch Hiệu Quả 2

trong đó scField () là hàm tạo của một đối tượng trừu tượng – một “phần tử thông tin”, có các phần tử kế thừa: số (scNumber), chuỗi (scString), cụm từ (scParagraph), … chúng ta nhận được trong PHP: phần tử cuối cùng = an mảng các đối tượng, hiển thị các thuộc tính của nó như một mục thực tế.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *