>  기사  >  백엔드 개발  >  php_php 팁에서 배열의 중복 요소를 삭제하는 방법

php_php 팁에서 배열의 중복 요소를 삭제하는 방법

WBOY
WBOY원래의
2016-05-16 20:02:131265검색

배열 요소를 삭제하는 여러 가지 PHP 메서드. 많은 경우 배열이 중복됩니다. 그러면 배열에서 일부 중복된 내용을 삭제하면 어떻게 해야 합니까? 아래에서는 중복 배열 요소를 제거하기 위해 순회 쿼리를 사용하는 여러 가지 방법이 사용됩니다.
방법 1. 중복된 배열 인스턴스 완전 삭제------배열에서 한 요소 삭제

function array_remove_value(&$arr, $var){
foreach ($arr as $key => $value) {
if (is_array($value)) {
array_remove_value($arr[$key], $var);
} else {
$value = trim($value);
if ($value == $var) {
unset($arr[$key]);
} else {
$arr[$key] = $value;
}
}
}
}

$a는 배열입니다:

count($a); //得到4
unset($a[1]); //删除第二个元素
count($a); //得到3
echo $a[2]; //数组中仅有三个元素,本想得到最后一个元素,但却得到blue,
echo $a[1]; //无值
?>

즉, 배열의 요소를 삭제한 후 배열의 요소 개수(count()로 구함)가 변경되었지만 배열 첨자가 재배열되지 않았으며 배열을 삭제하기 전의 키는 반드시 그에 따라 작동하는 데 사용됩니다.
나중에 저는 전혀 "메서드"라고 부르지 않는 다른 방법을 채택했습니다. 저는 PHP4의 기성 함수 array_splice() 를 사용했습니다.

count ($a); //得到4
array_splice($a,1,1); //删除第二个元素
count ($a); //得到3
echo $a[2]; //得到yellow
echo $a[1]; //得到blue
?>

방법2, 배열의 중복된 요소를 삭제하는 함수

function delmember(&$array, $id)
{
$size = count($array);
for($i = 0; $i <$size - $id - 1; $i ++)
{
$array[$id + $i] = $array[$id + $i + 1];
}
unset($array[$size - 1]);
}

보충 예시:

방법 1. php에는 배열의 중복된 값을 삭제하는 데 사용할 수 있는 array_unique 함수가 내장되어 있습니다.

  • array_unique -- 배열에서 중복된 값을 제거합니다
  • array_unique 설명
  • array array_unique(배열 배열)
  • array_unique()는 배열을 입력으로 받아들이고 중복 값이 ​​없는 새 배열을 반환합니다

키 이름은 변경되지 않습니다. array_unique()는 먼저 값을 문자열로 정렬한 다음 각 값에 대해 처음 발견된 키만 유지하고 이후의 모든 키를 무시합니다. 이는 정렬되지 않은 배열에서 처음으로 나타나는 동일한 값이 보존된다는 의미는 아닙니다.
참고: 두 요소는 (문자열) $elem1 === (문자열) $elem2인 경우에만 동일한 것으로 간주됩니다. 즉, 문자열의 표현이 동일한 경우입니다.
첫 번째 단위는 유지됩니다.
예: array_unique()

<&#63;php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
&#63;> 

위 예는 다음과 같이 출력됩니다.

Array
(
 [a] => green
 [0] => red
 [1] => blue
) 

방법 2, array_flip으로 중복 제거 효과 달성

또 다른 방법은 PHP의 array_flip 함수를 사용하여 간접적으로 중복 제거 효과를 얻는 것입니다
array_flip은 배열의 키와 값을 반전시키는 함수입니다. 배열의 두 값이 동일하면 반전 후에도 마지막 키와 값이 유지되는 기능이 있습니다. 배열을 간접적으로 구현합니다.

<&#63;php
$arr = array("a"=>"a1","b"=>'b1',"c"=>"a2","d"=>"a1");
$arr1 = array_flip($arr);
print_r($arr1);//先反转一次,去掉重复值,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr2 = array_flip($arr);
print_r($arr2);//再反转回来,得到去重后的数组,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr3 = array_unique($arr);
print_r($arr3);//利用php的array_unique函数去重,输出Array ( [a] => a1 [b] => b1 [c] => a2 )
&#63;>

두 방법의 차이점은 array_flip을 사용하면 반복되는 요소의 마지막 키와 값을 가져오고, array_unique를 사용하면 get it 두 개의 반복되는 요소의 첫 번째 키이자 값입니다.

이 기사가 PHP 프로그래밍을 배우고 배열의 반복 요소 문제를 해결하는 데 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.