Hướng dẫn php array unique multidimensional by key - mảng php đa chiều duy nhất theo phím

Tôi có một mảng đa chiều mà tôi cần được sắp xếp với tính độc đáo vì tôi có các bản ghi trùng lặp, vì vậy tôi cần array_unique để đi qua mảng và xóa các bản sao theo giá trị, ví dụ:

Array
[
    [0] => Array
        [
            [id] => 324
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]

    [1] => Array
        [
            [id] => 325
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]

    [2] => Array
        [
            [id] => 326
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]
]

Có sự trùng lặp time_start, tất cả đều giống nhau, cũng level

Array
[
    [0] => Array
        [
            [id] => 324
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]
]
0 nhưng chúng không bị ảnh hưởng, chỉ khi có sự phù hợp time_start nên loại bỏ nó và xử lý toàn bộ mảng [mảng lớn hơn bạn nghĩ, nhưng tôi Chỉ cần đăng một ví dụ nhỏ về mảng]. Nên loại bỏ các bản sao và trả lại như thế này:

Array
[
    [0] => Array
        [
            [id] => 324
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]
]

Những câu hỏi tôi thấy không hoạt động:

  • Định dạng lại mảng đa chiều dựa trên giá trị
  • Xóa phần tử khỏi mảng đa chiều dựa trên giá trị

Khi được hỏi ngày 19 tháng 5 năm 2011 lúc 10:22May 19, 2011 at 10:22

0

$input = array[ /* your data */ ];
$temp  = array[];
$keys  = array[];

foreach [ $input as $key => $data ] {
    unset[$data['id']];
    if [ !in_array[$data, $temp] ] {
        $temp[]     = $data;
        $keys[$key] = true;
    }
}

$output = array_intersect_key[$input, $keys];

hoặc

$input = array[ /* your data */ ];
$temp  = $input;

foreach [ $temp as &$data ] {
    unset[$data['id']];
}

$output = array_intersect_key[$input, array_unique[$temp]];

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 10:29May 19, 2011 at 10:29

Hszhszhsz

Phù bằng vàng 145K5858 gold badges254 silver badges308 bronze badges

5

$temp = array[];
array_filter[$yourArray, function [$v] use [&$temp] {
    if [in_array[$v['time_start'], $temp]] {
        return false;
    } else {
        array_push[$temp, $v['time_start']];
        return true;
    }
}];

Sử dụng

Array
[
    [0] => Array
        [
            [id] => 324
            [time_start] => 1301612580
            [level] => 0.002
            [input_level] => 0.002
        ]
]
2 sẽ lọc một mảng dựa trên kết quả của một cuộc gọi lại [tôi đã sử dụng hàm ẩn danh có thể được sử dụng kể từ Php 5.3]. Các giá trị time_start được thu thập thành một mảng tạm thời.

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 10:42May 19, 2011 at 10:42

Kapakapakapa

76.3K20 Huy hiệu vàng157 Huy hiệu bạc174 Huy hiệu đồng20 gold badges157 silver badges174 bronze badges

1

Tôi nghĩ bạn sẽ phải đi bộ nó:

$usedVals = array[];
$outArray = array[];
foreach [$targetArray as $arrayItem]
{
    if [!in_array[$arrayItem['time_start'],$usedVals]]
    {
        $outArray[] = $arrayItem;
        $usedVals[] = $arrayItem['time_start'];
    }
}
return $outArray;

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 10:30May 19, 2011 at 10:30

John Greenjohn GreenJohn Green

13.1k3 Huy hiệu vàng27 Huy hiệu bạc51 Huy hiệu Đồng3 gold badges27 silver badges51 bronze badges

1

$uniq = array[];
foreach[$no_unique as $k=>$v] if[!isset[$uniq[$v['time_start']]]] $uniq[$v['time_start']] = $v;
$uniq = array_values[$uniq];

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 10:30May 19, 2011 at 10:30

John Greenjohn GreenDanzan

13.1k3 Huy hiệu vàng27 Huy hiệu bạc51 Huy hiệu Đồng5 silver badges8 bronze badges

Làm thế nào để bạn có được các giá trị duy nhất trong một mảng đa chiều?

Một chức năng do người dùng xác định có thể giúp nhận được các giá trị duy nhất từ ​​các mảng đa chiều mà không cần xem xét các khóa. Bạn có thể sử dụng chức năng duy nhất của mảng PHP cùng với các hàm mảng khác để nhận các giá trị duy nhất từ ​​một mảng đa chiều trong khi bảo quản các khóa.use the PHP array unique function along with the other array functions to get unique values from a multidimensional array while preserving the keys.

Làm thế nào để làm cho các yếu tố mảng độc đáo trong PHP?

Hàm mảng_unique [] loại bỏ các giá trị trùng lặp khỏi một mảng. Nếu hai hoặc nhiều giá trị mảng giống nhau, sự xuất hiện đầu tiên sẽ được giữ và giá trị còn lại sẽ được gỡ bỏ. Lưu ý: Mảng trả về sẽ giữ loại khóa của Mảng đầu tiên.. If two or more array values are the same, the first appearance will be kept and the other will be removed. Note: The returned array will keep the first array item's key type.

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 ..

Làm thế nào tôi có thể nhận được các giá trị duy nhất từ hai mảng trong PHP?

Hàm mảng_diff [] [thủ công] có thể được sử dụng để tìm sự khác biệt giữa hai mảng: $ mảng1 = mảng [10, 20, 40, 80];$ mảng2 = mảng [10, 20, 100, 200];$ diff = mảng_diff [$ mảng1, $ mảng2];// $ diff = mảng [40, 80, 100, 200];array_diff[] [manual] function can be used to find the difference between two arrays: $array1 = array[10, 20, 40, 80]; $array2 = array[10, 20, 100, 200]; $diff = array_diff[$array1, $array2]; // $diff = array[40, 80, 100, 200];

Bài Viết Liên Quan

Chủ Đề