Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

Array
(
    [0] => Array
        (
            [file] => /var/websites/example.com/assets/images/200px/1419050406e6648e1c766551a0ffc91380fd6ff3406002011-10-233750.jpg
            [md5] => 42479bee7a304d2318250de2ef1962a9
            [url] => http://example.com/assets/images/200px/1419050406e6648e1c766551a0ffc91380fd6ff3406002011-10-233750.jpg
        )

    [1] => Array
        (
            [file] => /var/websites/example.com/assets/images/200px/21277792606e6648e1c766551a0ffc91380fd6ff3406002011-10-233750.jpg
            [md5] => 42479bee7a304d2318250de2ef1962a9
            [url] => http://example.com/assets/images/200px/21277792606e6648e1c766551a0ffc91380fd6ff3406002011-10-233750.jpg
        )
)

Làm thế nào tôi có thể loại bỏ các bản sao khóa MD5 từ mảng phía trên?

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

cây mướp tây

631K107 Huy hiệu vàng768 Huy hiệu bạc838 Huy hiệu đồng107 gold badges768 silver badges838 bronze badges

Đã hỏi ngày 23 tháng 10 năm 2011 lúc 16:12Oct 23, 2011 at 16:12

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

3

 'alpha',
    'some' => 'value',
  ),
  array(
    'md5' => 'alpha',
    'some' => 'other value',
  ),
  array(
    'md5' => 'bravo',
    'some' => 'third value',
  ),
);
// walk input array
$_data = array();
foreach ($data as $v) {
  if (isset($_data[$v['md5']])) {
    // found duplicate
    continue;
  }
  // remember unique item
  $_data[$v['md5']] = $v;
}
// if you need a zero-based array, otheriwse work with $_data
$data = array_values($_data);

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

Đã trả lời ngày 23 tháng 10 năm 2011 lúc 16:23Oct 23, 2011 at 16:23

Rodneyrehmrodneyrehmrodneyrehm

13.3k38 Huy hiệu bạc56 Huy hiệu đồng38 silver badges56 bronze badges

1

PHP đã có một chức năng để loại bỏ các phần tử trùng lặp khỏi một mảng. Nhưng thật không may, array_unique chỉ hỗ trợ so sánh dựa trên chuỗi:

Lưu ý: Hai yếu tố được coi là bằng nhau khi và chỉ khi (string) $elem1 === (string) $elem2. Trong từ: Khi biểu diễn chuỗi giống nhau. Phần tử đầu tiên sẽ được sử dụng. Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same. The first element will be used.

Vấn đề là bất kỳ mảng nào biến thành một chuỗi bằng với bất kỳ mảng nào khác:

Các mảng luôn được chuyển đổi thành chuỗi "Array"; […]

Nhưng bạn có thể sử dụng tính duy nhất của các phím mảng để giải quyết vấn đề này:

$index = array();
foreach ($arr as $key => $item) {
    if (isset($index[$item['md5']])) {
        unset($item[$key]);
    }
    $index[$item['md5']] = TRUE;
}

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

Bram

2.4356 Huy hiệu vàng38 Huy hiệu bạc55 Huy hiệu Đồng6 gold badges38 silver badges55 bronze badges

Đã trả lời ngày 23 tháng 10 năm 2011 lúc 16:23Oct 23, 2011 at 16:23

RodneyrehmrodneyrehmGumbo

631K107 Huy hiệu vàng768 Huy hiệu bạc838 Huy hiệu đồng107 gold badges768 silver badges838 bronze badges

1

Đã hỏi ngày 23 tháng 10 năm 2011 lúc 16:12

    $data = array(
          array(
            'md5' => 'alpha',
            'some' => 'value',
          ),
          array(
            'md5' => 'alpha',
            'some' => 'other value',
          ),
          array(
            'md5' => 'bravo',
            'some' => 'third value',
          ),
        );
        // walk input array


        function remove_duplicateKeys($key,$data){

        $_data = array();

        foreach ($data as $v) {
          if (isset($_data[$v[$key]])) {
            // found duplicate
            continue;
          }
          // remember unique item
          $_data[$v[$key]] = $v;
        }
        // if you need a zero-based array
        // otherwise work with $_data
        $data = array_values($_data);
        return $data;
        }

$my_array = remove_duplicateKeys("md5",$data);

Đã trả lời ngày 23 tháng 10 năm 2011 lúc 16:23Oct 24, 2011 at 6:43

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

RodneyrehmrodneyrehmChali

13.3k38 Huy hiệu bạc56 Huy hiệu đồng3 gold badges12 silver badges18 bronze badges

1

PHP đã có một chức năng để loại bỏ các phần tử trùng lặp khỏi một mảng. Nhưng thật không may, array_unique chỉ hỗ trợ so sánh dựa trên chuỗi:

$allMd5s = array_map(function($v) {return $v['md5'];}, $array);

$uniqueMd5s = array_unique($md5);

$result = array_intersect_key($arr, $uniqueMd5s);

Lưu ý: Hai yếu tố được coi là bằng nhau khi và chỉ khi (string) $elem1 === (string) $elem2. Trong từ: Khi biểu diễn chuỗi giống nhau. Phần tử đầu tiên sẽ được sử dụng.Oct 24, 2011 at 17:53

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

Vấn đề là bất kỳ mảng nào biến thành một chuỗi bằng với bất kỳ mảng nào khác:hakre

Các mảng luôn được chuyển đổi thành chuỗi "Array"; […]50 gold badges420 silver badges810 bronze badges

Nhưng bạn có thể sử dụng tính duy nhất của các phím mảng để giải quyết vấn đề này:

 array('name' => 'samson'),
    1 => array('name' => 'delilah'),
    2 => array('name' => 'samson'),
    3 => array('name' => 'goliath'),
);

$md5Processed = array();

$newArray = array_filter($array, "uniqueMD5");

print_r($newArray);

exit;

function uniqueMD5( $data ){
    global $md5Processed;

    if( !in_array( $data['name'], $md5Processed ) )
    {
        $md5Processed[] = $data['name'];
        return true;
    }
}

BramOct 23, 2011 at 16:22

2.4356 Huy hiệu vàng38 Huy hiệu bạc55 Huy hiệu Đồngariefbayu

Gumbogumbo12 gold badges70 silver badges92 bronze badges

// your array
$array = array(...);
// will be used to store md5 hashes
$md5 = array();
// walk through array
foreach ($array as $key => $arr) {
  // have we already seen this md5 hash?
  if (in_array($arr['md5'], $md5)){
    // remove element
    unset($array[$key]);
  }else {
    // keep element, but add it's md5
    $md5[] = $arr['md5'];
  }
}

Đây là chức năng cuối cùng của tôi sau những người giúp đỡ của bạn .... hy vọng nó sẽ giúp ai đó trong tương lai ...Oct 23, 2011 at 16:48

Đã trả lời ngày 24 tháng 10 năm 2011 lúc 6:43middus

Chalichali1 gold badge31 silver badges33 bronze badges

0

1.0353 huy hiệu vàng12 Huy hiệu bạc18 Huy hiệu đồng

Khi array_unique hoạt động trên các mảng phẳng, bạn không thể sử dụng trực tiếp. Nhưng trước tiên bạn có thể ánh xạ tất cả các giá trị

 'alpha',
    'some' => 'value',
  ),
  array(
    'md5' => 'alpha',
    'some' => 'other value',
  ),
  array(
    'md5' => 'bravo',
    'some' => 'third value',
  ),
);
// walk input array
$_data = array();
foreach ($data as $v) {
  if (isset($_data[$v['md5']])) {
    // found duplicate
    continue;
  }
  // remember unique item
  $_data[$v['md5']] = $v;
}
// if you need a zero-based array, otheriwse work with $_data
$data = array_values($_data);
1 cho một mảng phẳng, duy nhất và sau đó lấy các phần tử với
 'alpha',
    'some' => 'value',
  ),
  array(
    'md5' => 'alpha',
    'some' => 'other value',
  ),
  array(
    'md5' => 'bravo',
    'some' => 'third value',
  ),
);
// walk input array
$_data = array();
foreach ($data as $v) {
  if (isset($_data[$v['md5']])) {
    // found duplicate
    continue;
  }
  // remember unique item
  $_data[$v['md5']] = $v;
}
// if you need a zero-based array, otheriwse work with $_data
$data = array_values($_data);
2:Oct 23, 2011 at 16:15

Hướng dẫn php remove duplicates from array by key value - php xóa các bản sao khỏi mảng theo giá trị khóa

Đã trả lời ngày 24 tháng 10 năm 2011 lúc 17:53Chris Bornhoft

Hakrehakre4 gold badges36 silver badges55 bronze badges

5

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

Điều gì sẽ xảy ra nếu yếu tố chính trong mảng kết hợp được lặp lại hai lần?

Không, bạn không thể có bội số của cùng một khóa trong một mảng kết hợp.Tuy nhiên, bạn có thể có các khóa duy nhất mà mỗi giá trị tương ứng là mảng và các mảng đó có nhiều phần tử cho mỗi khóa.Lưu câu trả lời này.you cannot have multiple of the same key in an associative array. You could, however, have unique keys each of whose corresponding values are arrays, and those arrays have multiple elements for each key. Save this answer.

Hàm nào loại bỏ các giá trị trùng lặp khỏi một 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.filter() method: 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 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 () so sánh các giá trị của hai mảng (hoặc nhiều) và trả về sự khác biệt.Hàm này so sánh các giá trị của hai mảng (hoặc nhiều) và trả về một mảng chứa các mục từ Array1 không có trong Array2 hoặc Array3, v.v.array_diff() function compares the values of two (or more) arrays, and returns the differences. This function compares the values of two (or more) arrays, and return an array that contains the entries from array1 that are not present in array2 or array3, etc.