>백엔드 개발 >PHP 튜토리얼 >PHP 배열 조작(병합, 분할, 추가, 검색, 삭제 등)

PHP 배열 조작(병합, 분할, 추가, 검색, 삭제 등)

高洛峰
高洛峰원래의
2016-12-01 09:47:261162검색

1. 배열 병합
array_merge() 함수는 배열을 병합하고 결합된 배열을 반환합니다. 결과 배열은 첫 번째 입력 배열 매개변수로 시작하고 후속 배열 매개변수가 나타나는 순서대로 순차적으로 추가됩니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array array_merge (array array1 array2...,arrayN)

이 함수는 하나 이상의 배열 셀과 값을 병합합니다. ​​배열에서 이전 배열 뒤에 추가됩니다. 결과 배열을 반환합니다.
입력 배열의 문자열 키 이름이 동일한 경우 키 이름 뒤의 값이 이전 값을 덮어씁니다. 그러나 배열에 숫자 키가 포함된 경우 후속 값은 원래 값을 덮어쓰지 않고 추가됩니다.
배열만 지정하고 배열을 숫자로 인덱싱하는 경우 키는 연속적으로 다시 인덱싱됩니다.
코드 복사 코드는 다음과 같습니다.
$fruits = array("apple","banana","pear")
$numbered = array("1" ,"2 ","3");
$cards = array_merge($fruits, $numbered)
print_r($cards)// 출력
// 배열( [0] => 사과 [1] => 배 [3] => 2 [5] => 3 )

2. 배열 추가
array_merge_recursive() 함수는 array_merge()와 동일합니다. 두 개 이상의 배열을 병합하여 결합된 배열을 만들 수 있습니다. 둘 사이의 차이점은 입력 배열의 키가 결과 배열에 이미 존재하는 경우 함수가 이를 다르게 처리한다는 것입니다. array_merge()는 기존 키/값 쌍을 덮어쓰고 이를 현재 입력 배열의 키/값 쌍으로 대체하는 반면, array_merge_recursive()는 두 값을 함께 병합하여 원래 키로 새 배열을 형성합니다. 배열 이름. 배열을 재귀적으로 추가하는 배열 병합 형태도 있습니다. 형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
array array_merge_recursive(array array1,array array2[…,array arrayN])

프로그램 예는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다:
$fruit1 = array("apple" => "red", "banana" => "yellow"); Fruit2 = array("배" => "노란색", "사과" => "녹색")
$result = array_merge_recursive($fruit1, $fruit2)
print_r($result); 🎜>// 출력
/ / 배열 ( [사과] => 배열 ( [0] => 빨강 [1] => 녹색 ) [바나나] => 노랑 [배] => 노랑 )
?>

이제 핵심 사과는 두 개의 인덱스 배열로 구성된 배열을 가리킵니다.
3. 배열 연결
array_combine() 함수는 제출된 키와 해당 값 집합으로 구성된 새 배열을 가져옵니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array array_combine(arraykeys,arrayvalues)

두 개의 입력 배열은 크기가 동일해야 하며 비워둘 수 없습니다. 예제는 다음과 같습니다.
코드를 복사합니다. 코드는 다음과 같습니다.
$name = array("apple", "banana", "orange"); = array("빨간색", "노란색", "주황색");
$fruit = array_combine($name, $color)
print_r($fruit)// 출력
/ / 배열( [사과] = > 빨간색 [바나나] => 노란색 [주황색] => 주황색 )
?>

4. 배열 분할 array_slice()
array_slice( ) 함수는 키 오프셋에서 시작하여 오프셋+길이로 끝나는 A 부분을 반환합니다. 형식:

코드 복사 코드는 다음과 같습니다.
array array_slice (array array, int offset[,int length])

오프셋이 양수 값인 경우 분할은 배열의 시작 부분부터 오프셋 위치에서 시작합니다. 오프셋이 음수 값인 경우 분할은 배열 끝의 오프셋 위치에서 시작됩니다. 선택적 길이 매개변수가 생략되면 분할은 오프셋에서 시작하여 배열의 마지막 요소로 이동합니다. 길이가 주어지고 양수이면 배열 시작 부분의 오프셋+길이에서 끝납니다. 반대로 길이가 음수이면 배열의 시작 부분부터 count(input_array)-|length|로 끝납니다. 예를 들어보세요:
코드 복사 코드는 다음과 같습니다:
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "레몬" , "수박");
$subset = array_slice($fruits, 3)
print_r($subset)// 출력
// 배열( [0] => ; 배 [ 1] => 포도 [2] => 레몬 [3] => 수박 )
?>

그런 다음 낮은 음수 길이를 사용합니다.
코드는 다음과 같습니다:
$fruits = array("사과", "바나나", "오렌지", "배", "포도", "레몬", "수박")
$subset = array_slice($fruits, 2, -2) ;
print_r($subset);
// 출력
// 배열( [0] => 오렌지 [1] => 배 [2] => 포도 )
?> ;

5. 배열 결합 array_splice()
array_splice() 함수는 배열의 offset+length까지 모든 요소를 ​​삭제하고, 삭제된 요소를 배열 형태로 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array array_splice (array array, int offset[,length[,array replacement]])

오프셋이 양수 값인 경우 조인트는 거리에서 시작됩니다. 조인은 배열 시작 부분의 오프셋에서 시작됩니다. 오프셋이 음수 값인 경우 조인은 배열 끝의 오프셋에서 시작됩니다. 선택적 길이 매개변수를 생략하면 오프셋 위치에서 시작하여 배열 끝에서 끝나는 모든 요소가 제거됩니다. 길이가 주어지고 양수이면 조인은 배열 시작 부분의 오프셋 + 길이에서 끝납니다. 반대로, 길이가 주어지고 음수이면 공용체는 배열의 시작 부분부터 count(input_array) 길이로 끝납니다. 예시는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
$fruits = array("사과", "바나나", "오렌지", "배", "포도" ", "레몬", "수박");
$subset = array_splice($fruits, 4);
print_r($fruits);
print_r($subset);
// 출력
// 배열( [0] => 사과 [1] => 바나나 [2] => 오렌지 [3] => 배 )
// 배열 ( [0] => 포도 [ 1] => 레몬 [2] => Watermelon )
?>

선택적인 매개변수 replacement를 사용하여 대상 부분을 대체할 배열을 지정할 수 있습니다. 예시는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
$fruits = array("사과", "바나나", "오렌지", "배", "포도" ", "레몬", "수박");
$subset = array_splice($fruits, 2, -1, array("녹색 사과", "빨간 사과"));
print_r($fruits);
print_r($ subset);
// 출력
// 배열( [0] => 사과 [1] => 바나나 [2] => 녹색 사과 [3] => 빨간 사과 [4] = > 수박 )
// 배열 ( [0] => 오렌지 [1] => 배 [2] => 포도 [3] => 레몬 )
? >

이 기능의 사용법은 프로그램을 보면 명확하게 알 수 있습니다.

6. 배열의 교차 array_intersect()
array_intersect() 함수는 첫 번째 배열에만 나타나고 다른 모든 입력 배열에는 값으로 구성된 키가 포함된 배열을 반환합니다. 형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
array array_intersect(array array1,array array2[,arrayN...])

다음 예는 반환됩니다. $fruit1 배열에 나타나는 값 그리고 $fruit2 및 $fruit3에도 나타나는 모든 과일:
코드 복사 코드는 다음과 같습니다:
$fruit1 = array( "사과","바나나","오렌지") ;
$fruit2 = array("배","사과","포도")
$fruit3 = array("수박","오렌지", "사과");
$intersection = array_intersect ($fruit1, $fruit2, $fruit3)
print_r($intersection)// 출력
// 배열( [0] => ; Apple )
?>

array_intersect() 함수는 두 요소가 동일하고 데이터 유형이 동일한 경우에만 동일한 것으로 간주합니다.

7. 연관 배열의 교차 array_intersect_assoc()
array_intersect_assoc() 함수는 비교에서 배열의 키도 고려한다는 점을 제외하면 기본적으로 array_intersect()와 동일합니다. 따라서 첫 번째 배열에 나타나고 다른 모든 입력 배열에도 나타나는 키/값 쌍만 결과 배열에 반환됩니다.
형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
array array_intersect_assoc(array array1,array array2[,arrayN...])

다음 예는 $fruit1 에 나타나는 배열, $fruit2 및 $fruit3에도 나타나는 모든 키/값 쌍을 반환합니다.
코드 복사 코드는 다음과 같습니다.
$fruit1 = array ("빨간색"=>"사과","노란색"=>"바나나","주황색"=>"주황색")
$fruit2 = array("노란색"=>"배", "빨간색"=>"사과" ,"보라색"=>"포도");
$fruit3 = array("green"=>"수박","오렌지"=>"주황색"," red"=>"Apple") ;
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection)
// 출력
// 배열( [red] => Apple )
?> ;

8. 배열 차이 array_diff()
array_diff() 함수는 첫 번째 배열에는 나타나지만 다른 입력 배열에는 나타나지 않는 값을 반환합니다. 이 함수는 array_intersect()와 반대입니다.
코드 복사
array array_diff(array array1,array array2[,arrayN...])

코드 복사
코드 복사 코드는 다음과 같습니다. 다음과 같습니다:
$fruit1 = array("사과","바나나","오렌지")
$fruit2 = array("배","사과","포도" );
$fruit3 = array(" 수박","오렌지","사과")
$intersection = array_diff($fruit1, $fruit2, $fruit3)
print_r($intersection);
// 출력
// 배열( [1] => 바나나 )
?>

9. 연관 배열 array_diff_assoc()

array_diff_assoc() 함수는 비교할 때 배열의 키도 고려한다는 점을 제외하면 기본적으로 array_diff()와 동일합니다. 따라서 첫 번째 배열에는 나타나지만 다른 입력 배열에는 나타나지 않는 키/값 쌍만 결과 배열에 반환됩니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array array_diff_assoc(array array1,array array2[,arrayN...])

다음 예에서는 [노란색]만 반환합니다. => 바나나, 왜냐하면 이 특정 키/값 쌍은 $fruit1에 나타나지만 $fruit2 또는 $fruit3에는 존재하지 않기 때문입니다.
코드 복사 코드는 다음과 같습니다.
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"= >" 주황색");
$fruit2 = array("노란색"=>"배","빨간색"=>"사과","보라색"=>"포도")
$ Fruit3 = array ("녹색"=>"수박","오렌지"=>"주황색","빨간색"=>"사과")
$intersection = array_diff_assoc($fruit1, $fruit2, $ Fruit3);
print_r($intersection);// 출력
// 배열( [yellow] => Banana )

배열 배열을 사용할 때 순회합니다. 배열을 반복하여 개별 키나 값을 가져와야 하는 경우가 종종 있으므로(또는 키와 값을 모두 가져오는 경우) 당연히 PHP는 이러한 목적을 위해 몇 가지 기능을 제공합니다. 많은 함수는 현재 포인터 위치에서 키나 값을 얻는 것뿐만 아니라 포인터를 다음 적절한 위치로 이동하는 두 가지 작업을 수행합니다.

10. 현재 배열 키 가져오기 key()
key() 함수는 input_array의 현재 포인터 위치에 있는 키를 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
혼합 키(배열 배열)

다음 예는 배열을 반복하고 이동하여 $fruits 배열의 키를 출력합니다. 포인터:
코드 복사 코드는 다음과 같습니다:
$fruits = array("apple"=>"red", "banana"=>"yellow")
while ($key = key($fruits)) {
printf("%s
", $key)
next($fruits)
}
// apple
// 바나나

참고로 key()가 호출될 때마다 포인터가 이동하지 않습니다. 이를 위해서는 next() 함수를 사용해야 합니다. 이 함수의 유일한 기능은 포인터를 전진시키는 작업을 완료하는 것입니다.

11. 현재 배열 값 가져오기 current()
current() 함수는 배열의 현재 포인터 위치에 있는 배열 값을 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
mixed current(array array)

이전 예제를 수정해 보겠습니다. 이번에는 배열 값을 가져오고 싶습니다.
코드 복사 코드는 다음과 같습니다:
$fruits = array("apple"=>"red", "banana"=>"yellow")
while ($fruit = current($fruits) )) {
printf("% s
", $fruit)
next($fruits)
}
// 빨간색
// 노란색

12. 현재 배열 키 및 값each() 가져오기
each() 함수는 input_array의 현재 키/값 쌍을 반환하고 포인터를 한 위치 전진시킵니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array Each(array array)

반환된 배열에는 4개의 키가 포함되어 있으며 키 0과 키에는 키 이름이 포함되어 있으며 키는 1과 값에는 해당 데이터가 포함되어 있습니다. 각()이 실행되기 전에 포인터가 배열의 끝에 있으면 false가 반환됩니다.
코드 복사
$fruits = array("apple", "banana", "orange", "pear")
print_r (each($fruits) ); >// 배열([1] => 사과 [값] => 사과 [0] => 0 [키] => 0 )

Each()는 배열을 반복하기 위해 list()와 함께 사용되는 경우가 많습니다. 이 예는 이전 예와 유사하지만 전체 배열이 루프로 출력됩니다.
코드 복사 코드는 다음과 같습니다.
$fruits = array("apple", "banana", "orange", "배");
재설정($fruits);
while (list($key, $val) = Each($fruits))
{
echo "$key => $val< ;br />";
}
// 0 => 사과
// 1 => 바나나
// 2 => 오렌지
// 3 => 배

다른 배열에 배열을 할당하면 원래 배열 포인터가 재설정되므로 위의 예에서 $fruits를 루프 내의 다른 변수에 할당하면 무한 루프가 발생합니다.
이렇게 하면 배열 순회가 완료됩니다.

배열 요소 찾기, 필터링 및 검색은 배열 작업의 몇 가지 일반적인 기능입니다. 다음은 몇 가지 관련 기능입니다.

13. in_array() 함수
in_array() 함수는 배열에서 특정 값을 찾으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
boolean in_array(mixed needle,array haystack[,boolean strict])

다음 예를 보면 변수 apple이 이미 배열에 있으면 정보를 출력합니다.
코드 복사 코드는 다음과 같습니다.
$fruit = "apple"
$fruits = array("apple" ,"banana","orange","pear" );
if( in_array($fruit,$fruits) )
echo "$fruit가 이미 배열에 있습니다"; 매개변수는 선택사항이며 검색 시 in_array()를 강제로 적용합니다. 유형을 고려하세요.


14. array_key_exists() 함수
array_key_exists() 함수는 지정된 키가 배열에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
boolean array_key_exists(mixed key, array array)

다음 예에서는 배열 키에서 apple을 검색합니다. , 과일이 출력됩니다:
코드 복사
$fruit["apple"] = "red"
$fruit["banana"] = "yellow";
$fruit["pear"] = "녹색";
if(array_key_exists("apple", $fruit)){
printf("사과의 색은 %s",$fruit["apple" ]);
}
//apple의 색상은 빨간색입니다.

15. array_search() 함수
array_search() 함수는 배열에서 지정된 값을 검색하여 해당 키를 반환합니다. , 그렇지 않으면 false를 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
mixed array_search(mixed needle,array haystack[,boolean strict])

다음 예에서는 특정 날짜에 대해 $fruits를 검색합니다. (12월 7일) 발견되면 해당 주의 관련 정보를 반환합니다.
코드 복사 코드는 다음과 같습니다.
$fruits["apple"] = "red"; 바나나"] = "노란색" ;
$fruits["watermelon"]="녹색";
$founded = array_search("green", $fruits);
if($founded)
printf("%s는 %s에 설립되었습니다.",$founded, $fruits[$founded])
//watermelon은 green에 설립되었습니다.

16.array_keys() 함수 array_keys() 함수는 검색된 배열에서 발견된 모든 키를 포함하는 배열을 반환합니다. 형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
array array_keys(array array[,mixed search_value])

선택 매개변수 search_value가 포함된 경우 일치하는 항목만 이 값을 사용하면 키가 반환됩니다. 다음 예에서는 $fruit 배열에 있는 모든 배열을 출력합니다.
코드 복사 코드는 다음과 같습니다.
$fruits["apple"] = "red"
$fruits["banana"] = "노란색";
$fruits["watermelon"]="녹색";
$keys = array_keys($fruits)
print_r($keys); ] => ; apple [1] => 바나나 [2] => watermelon )

17. array_values() 함수
array_values() 함수는 배열의 모든 값을 반환하고 자동으로 반환된 배열을 대체합니다. 숫자 인덱스를 제공합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
array array_values(array array)

다음 예에서는 $fruits에 있는 각 요소의 값을 가져옵니다.
코드 복사 코드는 다음과 같습니다:
$fruits["apple"] = "red"
$fruits["banana"] = "yellow"
$fruits["watermelon"]=" green";
$values ​​= array_values($fruits);
print_r($values);
//Array ( [0] => 빨간색 [1] => 노란색 [2] => ; 녹색 )

때때로 배열을 확장하거나 배열의 일부를 삭제해야 할 때가 있습니다. PHP는 배열을 확장하고 축소하는 몇 가지 기능을 제공합니다. 이러한 기능은 다양한 대기열 구현(FIFO, LIFO)을 에뮬레이션하려는 프로그래머에게 편의를 제공합니다. 이름에서 알 수 있듯이 이러한 기능의 기능 이름(push, pop, Shift 및 unshift)은 해당 기능을 명확하게 반영합니다.
PS: 기존 대기열은 요소를 삭제하는 순서와 요소를 추가하는 순서가 동일하며 이를 FIFO(선입선출)라고 합니다. 대조적으로, 스택은 요소가 추가된 역순으로 제거되는 또 다른 데이터 구조입니다. 이것이 후입선출(LIFO)이 됩니다.


18. 배열의 헤드에 요소를 추가합니다.
array_unshift() 함수는 배열의 헤드에 요소를 추가합니다. 모든 기존 숫자 키는 배열의 새 위치를 반영하도록 수정되지만 관련 키는 영향을 받지 않습니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
int array_unshift(array array,mixed Variable[,mixed Variable])

다음 예에서는 앞에 두 개의 과일을 추가합니다. $fruits 배열:
코드 복사 코드는 다음과 같습니다.
$fruits = array("apple","banana")
array_unshift($fruits,"orange","pear")
// $fruits = array( "orange","pear","apple","banana");

19. 배열 끝에 요소를 추가합니다.
array_push() 함수는 int 유형으로, 데이터를 푸시한 후의 배열입니다. 요소 수에 따라 여러 변수를 이 함수에 매개변수로 전달할 수 있으며 동시에 여러 변수를 배열에 푸시할 수 있습니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
(array array,mixed Variable [,mixed Variable...])

다음 예에서는 $fruits에 두 개의 과일을 더 추가합니다. array :
코드 복사 코드는 다음과 같습니다:
$fruits = array("apple","banana")
array_push($fruits,"orange","pear")
/ /$fruits = array("apple","banana","orange","pear")

20. 배열의 선두에서 값을 삭제합니다.
array_shift() 함수는 삭제하고 배열에서 찾은 요소를 반환합니다. 결과적으로 숫자 키를 사용하면 해당 값이 모두 아래로 이동하는 반면, 연관 키를 사용하는 배열은 영향을 받지 않습니다. 형식은
코드 복사 코드는 다음과 같습니다.
mixed array_shift(array array)

다음 예에서는 $fruits 배열의 첫 번째 요소 apple을 삭제합니다.
코드 복사 코드
$fruits = array("apple","banana","orange","pear")
$fruit = array_shift($fruits)// $fruits = array ("banana" ,"orange","pear")
// $fruit = "apple";

21. 배열 끝에서 요소 삭제
array_pop() 함수는 다음을 삭제합니다. 그리고 배열의 마지막 요소를 반환합니다. 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
mixed array_pop(aray target_array)

다음 예에서는 $states 배열에서 마지막 상태를 삭제합니다.
코드 복사 코드는 다음과 같습니다:
$fruits = array("apple","banana","orange","pear")
$fruit = array_pop($fruits)
//$fruits = array("사과" ,"바나나","오렌지")
//$fruit = "배"

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