Hướng dẫn how are duplicates removed from an array without using any library php? - làm cách nào để xóa các bản sao khỏi một mảng mà không sử dụng bất kỳ thư viện php nào?

EDIT2: Các phiên bản dưới đây sử dụng Hashmap để xác định xem giá trị có tồn tại hay không. Trong trường hợp điều này là không thể, đây là một biến thể khác hoạt động an toàn với tất cả các giá trị PHP và thực hiện so sánh nghiêm ngặt [demo]: The versions below use a hashmap to determine if a value already exists. In case this is not possible, here is another variant that safely works with all PHP values and does a strict comparison [Demo]:

$array = array [1,4,2,1,6,4,9,7,2,9];

$unique = function[$a]
{
    $u = array[];    
    foreach[$a as $v]
    {
        foreach[$u as $vu]
            if [$vu===$v] continue 2
        ;
        $u[] = $v;
    }
    return $u;
};

var_dump[$unique[$array]]; # array[1,4,2,6,9,7]

Chỉnh sửa: phiên bản tương tự như bên dưới, nhưng w/o xây dựng trong các chức năng, chỉ có cấu trúc ngôn ngữ [demo]: Same version as below, but w/o build in functions, only language constructs [Demo]:

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]

Và trong trường hợp bạn không muốn có các mảng tạm thời lan rộng xung quanh, đây là một biến thể có chức năng ẩn danh:

$array = array [1,4,2,1,6,4,9,7,2,9];

$unique = function[$a] /* similar as above but more expressive ...                   ... you have been warned: */ {for[$v=reset[$a];$v&&[isset[$k[$v]]||[$k[$v]=1]&&$u[]=$v];$v=next[$a]];return$u;};

var_dump[$unique[$array]]; # array[1,4,2,6,9,7]

Đầu tiên là đọc rằng bạn không muốn sử dụng

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
4 hoặc các chức năng tương tự [
$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
5, v.v.], vì vậy đây chỉ là một khởi đầu, có lẽ nó vẫn còn được sử dụng SOM:

Bạn có thể sử dụng hướng dẫn sử dụng

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
6 PHP kết hợp với
$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
7 Hướng dẫn sử dụng PHP cho mảng số nguyên [demo] của bạn:PHP Manual in combination with
$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
7 PHP Manual for your array of integers [Demo]:

$array = array [1,4,2,1,6,4,9,7,2,9];

$array = array_keys[array_flip[$array]];

var_dump[$array]; # array[1,4,2,6,9,7]

Vì các khóa chỉ có thể tồn tại một lần trong một mảng PHP và

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
6 giữ lại thứ tự, bạn sẽ nhận được kết quả của mình. Vì đó là các chức năng được xây dựng, nên nó khá nhanh và không có nhiều thứ để lặp lại để hoàn thành công việc.

Hãy cùng xem với chương trình dưới đây để trình diễn.

$ Cho giá = mảng [2,5,2,10,4,5,8,8,16];

$uniqueArry = array[];
 
foreach[$givenArray as $val] { //Loop1 
    
    foreach[$uniqueArry as $uniqueValue] { //Loop2 

        if[$val == $uniqueValue] {
            continue 2; // Referring Outer loop [Loop 1]
        }
    }
    $uniqueArry[] = $val;
}
print_r[$uniqueArry];
 

Output:

Array [ [0] => 2 [1] => 5 [2] => 10 [3] => 4 [4] => 8 [5] => 16 ]
 

Giải trình:

Chúng tôi có một mảng số $ đã cho. Vòng ngoài [vòng 1] được sử dụng để lặp lại tất cả các giá trị của đã cho. Vòng lặp bên trong [vòng 2] là một mảng được sử dụng để lưu trữ các giá trị duy nhất.

Do đó, đối với mỗi lần lặp của vòng lặp bên ngoài [vòng 1], nó vòng qua tất cả các phần tử để duy nhất cho đến khi phần tử được gán hiện tại [$ val] của vòng ngoài [vòng 1] khớp với bất kỳ phần tử vòng lặp bên trong [vòng 2] nào.

Khi bất kỳ giá trị mảng bên trong nào [$ độc đáo] đáp ứng điều kiện

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
9 với phần tử lặp hiện tại từ vòng ngoài, nó bỏ qua vòng lặp hiện tại và tiếp tục đến lần lặp tiếp theo của vòng ngoài. Ở đây tiếp tục 2 đại diện cho vòng lặp ổ cắm.

LƯU Ý: Tiếp tục 1 [hoặc có thể sử dụng tiếp tục] Vòng lặp hiện tại được giới thiệu.Continue 1 [or can use continue] referred current loop.

Chúng ta có thể sử dụng cùng một logic mã ở trên cho các mảng chuỗi. Ví dụ

$givenArray = array["John","David","John","Peter", "Kevin", "Camren","Peter","David"];

$uniqueArry = array[];
 
foreach[$givenArray as $val] { //Loop1 
    
    foreach[$uniqueArry as $uniqueValue] { //Loop2 

        if[$val == $uniqueValue] {
            continue 2;
        }
    }
    $uniqueArry[] = $val;
}
print_r[$uniqueArry];

Output:

 Array [ [0] => John [1] => David [2] => Peter [3] => Kevin [4] => Camren ]
 

Hãy hiểu với chương trình bên dưới

$students = array["J"=>"John","D" => "David", "J"=> "John","P" =>"Peter", "K"=> "Kevin", "C"=>"Camren","P"=> "Peter","D"=>"David"];

$uniqueArry = array[];
 
foreach[$students as $startWith => $student] { //Loop1 
    
    foreach[$uniqueArry as $uniqueValue] { //Loop2 

        if[$student == $uniqueValue] {
            continue 2;
        }
    }
    $uniqueArry[$startWith] = $student;
}
print_r[$uniqueArry];
 

Output:

Array [ [J] => John [D] => David [P] => Peter [K] => Kevin [C] => Camren ]
  

Giải trình:

Chúng tôi đã đưa ra một loạt các sinh viên kết hợp với một danh sách các tên sinh viên là giá trị và chữ cái tên bắt đầu của họ là chìa khóa.

Trong mỗi khóa và giá trị hiện tại sẽ được gán cho $ startwith & $ student. Sẽ tuân theo hành vi logic tương tự như mô tả ở trên.

Ở đây mảng độc đáo được sử dụng tên sinh viên độc đáo với tên startwith tên đáng kính.

Trong phương pháp trước, chúng tôi đã tìm hiểu về việc loại bỏ các bản sao bằng nhiều vòng cho các vòng.

Ở đây chúng tôi sẽ học cách lọc các giá trị trùng lặp bằng cách lưu trữ các thành phần mảng đã cho làm khóa mà không sử dụng hàm inbuilt PHP. Hãy cùng tìm hiểu cách với mã ví dụ sau.

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
0

Output:

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
1

Giải thích mã:

  • Vòng lặp qua một mảng các phần tử nhất định có chứa các giá trị trùng lặp
  • Tuyên bố duy nhất
  • Đi qua mảng bằng cách sử dụng một vòng lặp. Trong quá trình lặp qua các phần tử mảng, giá trị của phần tử hiện tại được gán cho khóa & giá trị cho mảng mới được xác định là đơn vị.
  • Nó không cho phép lưu trữ các khóa trùng lặp trong các mảng giúp tránh nhiều lần xuất hiện của các phần tử và chỉ giữ một giá trị.

Trong ví dụ trước, chúng tôi đã học cách lọc sao chép các giá trị và tạo một mảng các giá trị duy nhất từ ​​một mảng nhất định.

Bây giờ chúng ta sẽ tìm thấy các yếu tố nhân đôi chỉ từ mảng đã cho.

Hãy cùng xem ví dụ về mã bên dưới

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
2

$array = array [1,4,2,1,6,4,9,7,2,9];
$unique = array[];
foreach[$array as $v]
  isset[$k[$v]] || [$k[$v]=1] && $unique[] = $v; 

var_dump[$unique]; # array[1,4,2,6,9,7]
3

Giải thích mã:

  • Xác định mảng trống $ DupplicateValues ​​& $ độc đáo
  • Vòng lặp qua một loạt các yếu tố đã cho
  • Kiểm tra xem $ UniqueValues ​​có chứa cùng một khóa với các phần tử lặp không. Lưu trữ phần tử trong mảng trùng lặpValues ​​nếu khóa tồn tại lưu trữ trong mảng độc đáo.

Vâng, nó có lợi.

Vâng, nó rất hữu ích, tuy nhiên cần có thêm thông tin.

Nó không hữu ích, vì vậy không.

Phản hồi [tùy chọn] Vui lòng cung cấp thêm chi tiết về lựa chọn bạn đã chọn ở trên để chúng tôi có thể phân tích các nhận xét và ý tưởng sâu sắc và thực hiện các bước cần thiết cho chủ đề này. Cảm ơn bạn

Gửi phản hồi

Làm thế nào bạn sẽ loại bỏ các bản sao khỏi một mảng mà không cần sử dụng thư viện?

Đưa ra một mảng được sắp xếp, nhiệm vụ là loại bỏ các phần tử trùng lặp khỏi mảng. Tạo một mảng phụ trợ nhiệt độ [] để lưu trữ các phần tử duy nhất.Traverse mảng đầu vào và một bản sao một bản sao các phần tử duy nhất của ARR [] thành temp []. Ngoài ra hãy theo dõi số lượng các yếu tố duy nhất.Create an auxiliary array temp[] to store unique elements. Traverse input array and one by one copy unique elements of arr[] to temp[]. Also keep track of count of unique elements.

Điều gì loại bỏ tất cả các giá trị trùng lặp khỏi mảng?

Sử dụng phương thức Filter []: Phương thức Filter [] tạo ra một mảng các phần tử mới vượt qua điều kiện chúng tôi cung cấp.Nó sẽ chỉ bao gồm những yếu tố mà đúng được trả lại.Chúng ta có thể xóa các giá trị trùng lặp khỏi mảng bằng cách điều chỉnh điều kiện của chúng ta.: The filter[] method creates a new array of elements that pass the condition we provide. It will include only those elements for which true is returned. We can remove duplicate values from the array by simply adjusting our condition.

Làm thế nào loại bỏ các bản sao trong mảng giảm?

# Làm thế nào để loại bỏ các bản sao mảng trong ES6..
Sử dụng Set.Chuyển đổi được đặt thành một mảng bằng Array.From ..
2: Sử dụng bộ lọc.Chỉ số.lọc.Lấy các giá trị trùng lặp ..
3: Sử dụng giảm ..
Đầu vào cộng đồng ..

Làm thế nào tôi có thể loại bỏ các giá trị trùng lặp khỏi một mảng đa chiều trong PHP?

Tôi đang giải thích lý do tại sao chúng tôi sử dụng 'serialize' và 'unserialize' trong các bước:..
Bước 1: Chuyển đổi mảng đa chiều thành mảng một chiều.....
Bước 2: Làm cho các giá trị duy nhất.....
Bước 3: Hoàn nguyên nó thành mảng đa chiều ..

Bài Viết Liên Quan

Chủ Đề