배열 작업을 위한 PHP 함수입니다. PHP로 작성: 배열 작업(시작). 항목 추가 및 제거

(배열 내의 배열, 행렬)

PHP 배열이란 무엇입니까?

저는 포기한 사례로 이 주제를 시작하고 싶습니다. 우리가 몇 가지를 고려하고 있다고 가정 해 봅시다. 사람. 그는 가지고있다 이름, 성, 주소, 전화번호, 성별, 키, 눈 색깔등등. 이 모든 지점에 대한 정보는 개인에 대한 일련의 데이터에 기인할 수 있습니다.

배열은 항목에 대한 구체적인 내용 없이 다른 유형일 수 있습니다. 주제만 있을 겁니다. 이렇게 말하자 웹 프로그래밍. 그리고 요소는 언어가 될 것입니다 - HTML, CSS, 자바스크립트, PHP, MySQL. 총 5개의 요소가 있습니다.

기반을 둔 마지막 예배열을 가정해 보겠습니다.

웹 프로그래밍
1. HTML
2.CSS
3. 자바스크립트
4.PHP
5. MySQL

이제 이 예를 보고 기본 개념을 분석해 보세요.

PHP의 배열공통 주제로 관련되어 있으며 요소 수가 고정되어 있는 동일한 유형의 순차적으로 위치한 데이터 집합입니다.

배열 이 예에서는라고 불릴 것이다 웹 프로그래밍.

각 요소에는 고유한 서수 위치인 식별자가 있습니다.
색인(배열 키) - 시퀀스 번호 또는 텍스트 값, 요소를 식별할 수 있습니다.

위 예의 인덱스는 다음과 같습니다. 1에서 5까지의 숫자 값. 인덱스 2에 액세스하면 CSS가 표시됩니다.

PHP 배열의 예

이제 위의 예를 러시아어가 아닌 PHP 구문으로 살펴보겠습니다. 배열이 더 짧게 호출된다고 가정해 보겠습니다. 편물. 안에 대괄호인덱스를 삽입합니다.
인덱스 값에 숫자 값이 포함되는 간단한 배열 예를 살펴보고 마치 변수에 값을 할당하는 것처럼 배열을 생성하겠습니다.

$web="HTML";
$web="CSS";
$web="자바스크립트";
$web="PHP";
$web="MySQL";

$웹; // 이 변수에는 5개의 요소가 있는 배열이 포함되어 있습니다.

// 배열 요소 중 하나를 표시하려면 배열의 인덱스를 지정하면 됩니다.
에코 $web; // PHP 출력

1차원 배열

인덱스 배열

위에서는 웹 프로그래밍을 통해 1차원 배열의 예만 살펴보았습니다.
이런 식으로 생성되는 경우는 거의 없습니다. 오히려 배열의 구조를 시각적으로 보여줍니다. 더 자주 그들은 다른 방법을 사용합니다.

$web=array("HTML","CSS","자바스크립트","PHP","MySQL");
에코 $web; // "HTML"을 출력합니다.
에코 $web; // "JavaScript"를 출력합니다.
에코 $web; // "PHP"를 인쇄합니다.

인덱스 값을 설정하려면 다음과 같이 지정해야 합니다. 징후 => 인덱스를 값에 할당하거나 그 반대로 인덱스 값에 할당하기 위한 포인터입니다.

$web=array(1=>"HTML",2=>"CSS",3=>"자바스크립트",4=>"PHP",5=>"MySQL");
에코 $web; // HTML
에코 $web; // CSS
에코 $web; //PHP
이 예에서는 1부터 계산이 시작됩니다. 따라서 인덱스가 0인 변수는 비어 있습니다.

다음 예에서는 인덱스를 지정하지 않습니다.

$day="월요일"; // 인덱스 0
$day="화요일"; // 1
$day="수요일"; // 2
$day="목요일"; // 삼
$day="금요일"; // 4
처음부터 순차적으로 채워지는 것을 볼 수 있습니다.

연관 배열

배열 요소에 대한 문자 인덱스를 생성해야 하는 경우가 종종 있습니다. 위에서 언급했듯이 이러한 인덱스는 다음으로 구성되어야 합니다. 라틴 문자, 이름은 따옴표로 묶어야 합니다. 사람의 예를 살펴보겠습니다.

$user["nick"]="논리";
$user["name"]="파벨";
$user["age"]="25";
$user["sex"]="남성";

$사용자; // $user 변수에는 문자 인덱스가 있는 4개의 요소가 있는 배열이 포함되어 있습니다.

// 문자 인덱스를 나타내는 배열 요소를 표시합니다.
echo $web["이름"]; // "Pavel"을 인쇄합니다.
보시다시피 모든 것이 아주 간단합니다. 우리는 지수 값만 인용합니다.

2차원 배열

1차원 배열에 대한 첫 번째 부분을 놓쳤다면 꼭 읽어 보시기 바랍니다.
쉽게 말하면 배열 안의 배열입니다. 즉, 큰 배열의 요소가 다릅니다. 이러한 배열은 실제로 스크립트 속도를 저하시켜 로딩을 방해합니다. , 따라서 빠른 처리유사한 데이터 그룹(데이터베이스란 무엇입니까?)에 대해 데이터베이스가 생성되었지만 이에 대해서는 나중에 자세히 설명합니다. 2차원 배열의 예를 살펴보겠습니다.

// 세계 각지의 이름을 담은 배열
$m = array("유럽","아시아","아프리카","미국","호주 및 오세아니아");

// 국가 이름이 담긴 배열
$s = array("러시아","우크라이나","벨로루시","카자흐스탄");

// 대문자 이름을 담은 배열
$с = array("모스크바","키예프","민스크","아스타나");

// 2차원 배열 생성 지리학
$geography = array($m, $s, $c);
?>
포함된 배열에는 알 수 있듯이 다음이 있을 수 있습니다. 다른 수량강요. 1차원 배열에 관한 부분에서 배열의 각 요소는 인덱스를 가질 수 있습니다. 따라서 포함된 각 배열에 서로 다른 값을 할당해 보겠습니다.

이렇게 하려면 마지막 줄을 확장하고 다음과 같이 작성합니다.

$geography = array("세계의 일부"=>$m, "국가"=>$s, "수도"=>$s);

PHP 배열 작업을 위한 함수

각각- 사이클 수가 배열 요소 수와 동일한 배열 작업을 위한 순환 함수입니다.

그것은 가지고있다 다음 보기. PHP 코드

Foreach($key=>$value 형식의 배열)
팀;
글쎄, 바로 작업의 예

// 유명한 IT로 배열을 생성합니다.
$names["Ritchie"] = "데니스";
$names["Thompson"] = "켄";
$names["Gates"] = "빌";
$names["Jobs"] = "스티브";

Foreach($names as $key => $value) (
echo "$value $key";
}
?>
스크립트가 화면에 표시됩니다

데니스 리치
켄 톰슨
빌 게이츠
스티브 잡스
세다- 배열의 요소 수를 반환하는 함수입니다.

에코 카운트($names); // IT를 사용한 예에서는 값 4를 반환합니다.
종류- 배열 요소를 정렬하는 함수입니다. 경우에 편리함 수치색인.
분류- 배열 요소를 정렬하는 함수 역순으로.

정렬($이름); //순서대로 정렬됩니다. Index에 숫자가 있으면 편리합니다.
정렬($이름); // 역순으로 정렬합니다. 즉, 인덱스에 따라 요소의 순서는 3, 2, 1, 0이 됩니다.
설정되지 않음- 배열 요소를 제거하는 함수입니다.

설정 해제($array); // 인덱스 2를 가진 배열 요소 제거
설정 해제($배열); // 전체 배열 삭제
배열_검색- 배열에서 검색 기능. 두 가지 인수가 있습니다. 간단히 말해서 array_search("what", where)

$동물="개";
$동물="고양이";
$animals="새";
echo array_search("cat",$animals); // 요소의 인덱스(번호 2)를 표시합니다.
혼합- 배열 값의 키를 섞는 함수입니다.

Shuffle($animals); // 요소를 무작위 순서로 정렬
관심을 가져주셔서 감사합니다!

배열은 이해하기 매우 간단하다는 사실에도 불구하고 많은 사람들이 배열을 접할 때 어려움을 겪습니다. 이것이 바로 배열에 대한 불확실성의 그림자를 없애기 위해 배열에 대해 조금 쓰기로 결정한 이유입니다. 배열은 프로그래밍에서 없이는 할 수 없는 요소 중 하나라고 말할 수 있습니다. 이를 통해 많은 작업이 단순화되고 코드가 더 읽기 쉽고 명확해지며, 코드 작성 시간도 절약할 수 있습니다. 왜? 어떻게? 이제 모든 것을 알려 드리겠습니다.

배열이란 무엇입니까?
굳이 귀찮게 설명하지 않으면 명확한 언어로, 배열은 임의의 수의 다른 변수를 포함하는 변수이며, 차례로 배열이 될 수도 있습니다. 따라서 배열은 단순히 거대하고 많은 정보를 포함할 수 있습니다. 그리고 감사합니다 PHP 함수배열 작업 시 작업하기가 매우 편리해집니다. 정렬, 정리, 찾기 필요한 열쇠, 정렬 등을 수행할 수 있습니다.

몇 가지 예
예를 살펴보겠습니다:

$b = "테스트 b" ; ?>

여기서는 두 개의 변수를 만들었습니다.

1
2
3

$test_array [ "a" ] = "테스트 a" ;
$test_array [ "b" ] = "테스트 b" ; ?>

그리고 여기에서 $test_array 배열을 만들고 일부 값이 포함된 2개의 키를 만들었습니다.
처음에는 배열이 있는 모든 것이 다소 복잡해 보일 수 있지만 화면에 1000개의 변수를 표시해야 하는 상황을 상상해 보겠습니다. 이것이 모두 별도의 변수라면 다음과 같이 작성하는 동안 종이 전체를 작성할 수 있습니다.

1
2
3
4
5

에코 $b ;
에코 $c ;
에코 $d ;
... ?>

그러나 이러한 변수가 모두 배열 키라면 간단히 다음과 같이 작성할 수 있습니다.

1
2
3

에코 $값 ;
} ?>

foreach 구성은 각 배열 키를 차례로 반복하며 $value에는 현재 배열 키의 값이 포함됩니다. 정말 편리합니까? 그리고 이것은 가장 원시적인 예일 뿐입니다.

데이터 정렬
가장 많은 것 중 하나 최선의 방법배열을 적용한다는 것은 나중에 혼동하지 않도록 데이터를 정렬하거나 일부 데이터를 결합하는 데 사용하는 것입니다. 자동차의 예를 살펴보자. 자동차 2대가 있고 각 자동차에는 두 가지 인테리어 옵션이 있다고 가정해 보겠습니다. 그리고 각각 3가지 색상이 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13

"머신1" => 배열(
"salon1" => 배열(
"color1" => "검은색" ,
"color2" => "빨간색" ,
"color3" => "녹색"
),
"살롱2"
),
"Machine2" => 배열(
//등등
); ?>

이런 식으로 우리는 machine1과 machine2라는 두 개의 키를 포함하는 배열을 얻습니다. 각각 2개의 살롱이 있고, 각 살롱에는 3가지 색상이 있습니다. 그리고 이 모든 것은 매우 쉽게 얻을 수 있습니다. 예를 들어:

//"검은색"을 출력합니다.?>

찾다
모든 데이터와 마찬가지로 배열에서도 검색이 중요하며, PHP는 배열 검색을 위한 다양한 기능을 제공합니다. 예를 들어 array_key_exists() 함수는 배열에 특정 키가 있는지 확인하고, in_array() 함수는 배열에 특정 값이 있는지 확인합니다. 아직 이해하지 못한 분들을 위해 배열의 모든 데이터는 키=값 형식으로 저장됩니다.

배열은 쉽게 액세스하고 참조할 수 있는 단일 슈퍼 변수로 인덱싱되고 연결되는 변수 모음으로, 코드 줄, 함수 및 페이지 간에 여러 값을 공유하는 편리한 방법을 제공합니다. 이 문서에서는 배열 내부의 개요를 제공하고 배열을 조작하기 위한 PHP의 내장 함수를 모두 설명합니다. 하지만 이 주제에 대해 자세히 알아보기 전에 실제 PHP 코드에서 배열을 사용하는 가장 일반적인 방법을 살펴보는 것이 좋습니다.

PHP에 내장된 많은 환경 변수는 배열로 표시됩니다(예를 들어 $_SESSION 배열은 PHP의 세션 메커니즘을 사용하여 페이지에서 페이지로 전파되는 모든 변수 이름과 값을 포함합니다). 이러한 변수에 액세스하려면 최소한 배열에 액세스하는 방법을 알아야 합니다.

연관 및 숫자 인덱스 배열

숫자 인덱스 배열은 숫자를 인덱스 값으로 사용하는 반면 연관 배열은 문자열을 사용합니다. 연관 배열에서는 각각의 새 요소에 고유한 문자열 인덱스가 할당되어야 합니다. 숫자형 인덱스가 있는 배열을 사용하면 요소를 간단히 추가할 수 있으며, PHP는 자동으로 0부터 시작하는 첫 번째 빈 숫자에 해당 인덱스를 할당합니다. 두 가지 유형의 배열을 모두 사용하면 한 번에 하나씩 새 요소를 추가할 수 있습니다. 연관 배열은 키가 의미 정보를 저장할 수 있기 때문에 구성 정보를 저장하는 데 적합합니다.

주의하세요: 대부분의 사람들은 0이 아닌 1부터 세기 시작합니다. 멍하니 존재하지 않는 배열 요소를 쉽게 참조할 수 있습니다. 이를 호출합니다. 1만큼 과대평가 오류(하나씩 오류). 배열의 마지막 요소에 대한 인덱스 값을 얻으려면 배열 길이에서 1을 빼야 합니다. 실수로 인덱스 0이 아닌 1에서 배열 탐색을 시작한 일반적인 증상은 배열의 마지막 요소에 액세스하려고 할 때 해당 요소를 찾을 수 없다는 사실입니다.

PHP 내에서 숫자 인덱스가 있는 배열은 연관 배열과 똑같은 방식으로 저장됩니다. 숫자 인덱스가 있는 배열은 이전 값의 인덱스를 하나씩 증가시켜 다음 값에 액세스할 수 있기 때문에 데이터 세트를 탐색하는 더 쉬운 방법을 제공합니다.

배열 만들기

PHP 스크립트에서 배열을 생성하는 세 가지 주요 방법은 미래 배열의 요소 중 하나에 값을 할당하는 것(따라서 암묵적으로 배열을 생성하는 것), array() 구문을 사용하는 것, 그리고 다음과 같은 특성을 가진 함수를 호출하는 것입니다. 배열을 값으로 반환합니다.

직접 할당

배열을 만드는 가장 간단한 방법은 변수가 이미 배열인 것처럼 작업하고 변수에 값을 할당하는 것입니다.

PHP 코드 // 숫자형 배열 생성 및 채우기 $array = 1; $배열 = 2; $array = "안녕하세요, 세상!"; // 연관배열 생성 및 채우기 $arr["fruit"] = "apple"; $arr["color"] = "녹색"; $arr["count"] = 40; // 연관 배열과 숫자형 배열을 혼합할 수 있으며 // 이로 인해 오류가 발생하지 않습니다(그러나 이 접근 방식을 사용하지 않는 것이 좋습니다) $arr = "pear"; $array["ten"] = 10;

배열을 만들려면 해당 요소와 인덱스의 값을 결정해야 합니다. 배열 요소는 문자열, 숫자, 심지어 다른 배열을 포함한 모든 값이 될 수 있습니다. 키 필드는 스칼라여야 합니다. 스칼라 값은 TRUE 및 FALSE 값을 포함하는 숫자나 문자열과 같은 기본 유형의 값이지만 객체와 같이 여러 개의 복합 값을 가질 수 있는 데이터는 아닙니다. 또한 각 요소의 배열 키 필드에는 고유한 값이 있어야 합니다. 그렇지 않으면 동일한 키를 사용하여 기존 요소 위에 새 요소를 작성할 수 있습니다. 다른 요소에 대해 이미 정의된 새 요소에 키를 할당하려고 하면 새 값이 이전 값을 대체합니다.

배열() 구성

배열을 생성하는 또 다른 방법은 요소 및 관련 키의 사양을 기반으로 새 배열을 생성하는 array() 구문을 사용하는 것입니다. 가장 간단한 버전에서는 array()가 매개변수 없이 호출되어 새로운 빈 배열이 생성됩니다. 가장 단순한 버전보다 더 복잡한 것은 키를 지정하지 않고 쉼표로 구분된 요소 목록을 저장하는 array() 구성입니다. 결과적으로 요소는 지정된 순서로 배열에 저장되고 0부터 시작하는 정수 키가 할당됩니다. 예를 들어 다음 명령문을 실행합니다.

PHP 코드 // array() 구문을 사용하여 숫자 배열을 만듭니다. $fruit = array("Orange", "Apple", "Banana", "Pear");

변수 이름 $fruit는 각각 인덱스 0, 1, 2 및 3을 갖는 4개의 문자열 요소("Orange", "Apple", "Banana", "Pear")가 있는 배열의 이름이 됩니다. 배열은 요소가 기록된 순서를 기억합니다. 따라서 위의 $fruit 할당 작업은 다음 작업과 정확히 동일한 결과를 생성합니다.

PHP 코드

단, 첫 번째 할당 시 $fruit가 바인딩 해제되어 있어야 합니다. 다음 예와 같이 할당 작업에서 인덱스를 생략하여 유사한 효과를 얻을 수도 있습니다.

PHP 코드 $fruit = "주황색"; $fruit = "사과"; $fruit = "바나나"; $fruit = "배";

이 경우 PHP 인터프리터는 0부터 위쪽으로 계산되는 정수 인덱스를 가져야 하는 순차 요소가 추가된다는 가정에 따라 작동합니다.

기본적으로 배열 인덱스의 번호 지정은 1이 아닌 0부터 시작한다는 점을 다시 한 번 강조해야 합니다. 배열 인덱스 번호 지정에 대한 이 규칙은 대부분의 프로그래밍 언어에서 허용됩니다.

이전 예제에 표시된 array() 구문의 간단한 예제에서는 인덱스가 요소에 자동으로 할당되었지만 이러한 인덱스는 엄격하게 정수이고 0부터 시작하므로 이 접근 방식에서는 선택의 폭이 넓지 않습니다. 그러나 알고 보니 array() 구문은 연관 배열을 생성하기 위해 특별한 구문 구조를 사용하는 기능을 제공합니다. 요소 값을 쉼표로 구분하여 나열하는 대신 이 구성을 사용하면 키와 값이 특수 문자 =>로 구분되는 쉼표로 구분된 키-값 쌍을 지정할 수 있습니다. 다음 진술을 고려하십시오.

PHP 코드 $fruit = array(0 => "오렌지", 1 => "사과", 2 => "바나나", 3 => "배");

이 연산자를 실행하면 위의 할당 연산자를 실행하는 것과 동일한 결과가 생성됩니다. 각 문자열은 배열에 순차적으로 저장되고 이러한 문자열 값에는 순서대로 인덱스 0, 1, 2, 3이 할당됩니다. 그러나 정확하게 사용할 수 있습니다. 대신에 동일한 요소를 저장하는 동일한 구문 구조를 사용하지만 문자열 인덱스를 사용합니다.

PHP 코드 $fruit = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배");

이렇게 하면 동일한 4개의 요소가 동일한 순서로 배열에 추가되지만 숫자가 아닌 색상 키를 사용하여 색인을 생성합니다. 예를 들어, 배열에서 노란색 과일의 이름을 추출하려면 다음 표현식을 계산하면 충분합니다.

PHP 코드 // 이 요소에는 "Banana" 값이 있어야 합니다. $fruit["yellow"];

배열을 반환하는 함수

스크립트에서 배열을 만드는 마지막 방법은 배열을 반환하는 함수를 호출하는 것입니다. 이는 사용자 정의 함수일 수도 있고 일부 내부 PHP 메소드를 사용하여 배열을 생성하는 내장 함수일 수도 있습니다.

예를 들어 데이터베이스와 상호 작용하는 많은 함수는 결과를 동적으로 생성된 배열로 반환합니다. 나중에 배열 조작 함수에서 템플릿으로 사용하기 편리한 배열 생성 전용으로 설계된 다른 함수도 있습니다. 그러한 기능 중 하나는 범위(), 두 개의 정수를 매개 변수로 사용하고 이러한 매개 변수 사이의 숫자 축에 있는 모든 정수(포함)로 채워진 배열을 반환합니다. 즉, 연산자 $my_array = range(1,5); $my_array = array(1, 2, 3, 4, 5); 연산자와 동일합니다.

샘플 값

이 섹션에서는 값이 이 배열에 저장된 후 배열에서 값을 검색하는 방법에 대한 질문에 대한 답을 찾을 수 있습니다.

인덱스나 키를 이용한 선택

배열 요소의 값을 검색하는 가장 직접적인 방법은 요소의 인덱스를 사용하는 것입니다. 예를 들어 $my_array 배열의 인덱스 5에 값이 기록된 경우 $my_array 표현식을 평가하면 저장된 값을 가져와야 합니다.

목록() 구성

키를 사용하지 않는 배열에서 값을 검색하는 다른 방법이 많이 있습니다. 이러한 방법의 대부분은 기본적으로 배열이 저장소로 전송된 순서대로 요소를 등록한다는 사실을 기반으로 합니다. list() 구문은 연속 배열 요소의 여러 값을 변수에 할당하는 데 사용됩니다. 두 개의 명령문이 실행되었다고 가정해 보겠습니다.

PHP 코드 $fruit = array("오렌지", "사과", "바나나", "배"); 목록($과일1, $과일2) = $과일;

이러한 명령문은 "Orange" 문자열을 $fruit1에 할당하고 "Apple" 문자열을 $fruit2에 할당합니다(변수가 충분하지 않아 "Banana" 문자열은 어떤 변수에도 할당되지 않습니다). list() 구문의 변수에는 요소가 원래 배열에 저장된 순서대로 배열 요소의 값이 할당됩니다. 대입 연산자의 구문 구조가 얼마나 특이한지 주목하십시오. list() 구문은 대입 연산자(=) 기호 왼쪽에 있는 반면, 이 위치에서는 일반적으로 변수 이름만 볼 수 있습니다.

어떤 면에서 list() 구성은 array()의 반대 또는 반대입니다. 왜냐하면 array()는 매개변수를 배열로 압축하는 반면 list()는 배열을 압축 해제하여 개별 변수에 값을 할당하기 때문입니다.

다차원 배열

지금까지 설명한 모든 예제에서 중괄호에 지정된 키는 배열에 대한 한 가지 수준의 액세스만 정의했기 때문에 배열은 1차원이었습니다. 그러나 PHP 언어를 사용하면 임의 개수의 키를 사용하여 다차원 배열에 대한 지원을 쉽게 제공할 수 있습니다. 다차원 배열은 단순히 다른 배열을 저장하는 배열입니다. 아래는 숫자형 및 연관 다차원 배열을 생성하는 예이며, 아래는 그 사용법을 설명하는 순서도입니다.

PHP 코드 // 두 개의 간단한 1차원 배열 $counts = array(1, 2, 10, 14, -5); $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); // 두 개의 2차원 배열 $counts2 = 1; $counts2 = 2; $counts2 = 3; $counts2 = 4; $counts2 = 5; $counts2 = 6; $counts2 = 7; $counts2 = 8; $counts2 = 9; $nature = array("과일" => array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"), " flower" => array("red" => "과꽃", "white" => "장미", "pink" => "모란", "blue" => "bell")); // 흰 꽃의 값을 표시합니다. echo $nature["flower"]["white"];예제의 1차원 배열과 2차원 배열의 구조

값을 검색하기 위해 잘못된 인덱스를 사용하여 다차원 배열에 액세스하려고 시도해도 심각한 처벌을 받지는 않습니다. 일치하는 키가 없으면 전체 표현식이 바인딩되지 않은 변수로 처리됩니다.

배열에 대한 정보 얻기

위에서는 배열을 생성하고, 배열에 값을 저장한 후, 필요할 때 다시 값을 검색하는 방법을 설명했습니다. 아래 표에는 배열에 대한 정보를 얻는 데 사용할 수 있는 몇 가지 다른 유형의 함수가 요약되어 있습니다.

배열 정보를 얻기 위한 간단한 PHP 함수
기능 설명
is_배열() 모든 유형의 단일 매개변수를 허용하고 매개변수가 배열이면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
세다() 배열을 실제 매개변수로 사용하고 배열에 있는 비어 있지 않은 요소의 수를 반환합니다.
크기() count()와 동일
in_array() 두 개의 실제 매개변수, 즉 요소(배열에 값으로 기록될 수 있음)와 배열(요소를 포함할 수 있음)을 사용합니다. 요소가 배열에 값으로 포함되어 있으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다. (이 함수는 배열에 특정 키가 포함되어 있는지 확인하지 않습니다.)
isSet($배열[$key]) 배열 형식을 취하고 key로 지정된 부분이 배열의 유효한 키인 경우 true를 반환합니다. (이것은 변수가 바인딩되었는지 확인하는 보다 일반적인 isSet() 함수를 사용하는 특수한 방법입니다.)

이 함수들은 모두 주어진 배열의 한 레벨의 깊이에서만 동작하므로, 더 깊은 레벨의 다차원 배열에 저장된 값에 대한 데이터를 얻기 위해서는 어느 레벨에서 정보를 얻어야 합니다. 다음은 위의 2차원 배열 $nature의 경우의 예입니다.

PHP 코드 에코 카운트($nature); // 2 echo count($nature["flower"]); // 4

배열에서 요소 제거

배열에서 요소를 삭제하는 작업은 간단하며 변수에 할당된 값을 삭제하는 작업과 완전히 유사합니다. 함수를 호출하기만 하면 됩니다. 설정되지 않음()아래:

PHP 코드 $my_array = "값"; $my_array = "이 값은 제거되어야 합니다"; $my_array = "다른 값"; unset($my_array);

코드가 완료되면 이 $my_array 변수에는 두 개의 인덱스(각각 0과 2)와 연결된 두 개의 값("value", "another value")이 포함됩니다.

요소를 삭제하는 작업은 요소에 빈 값을 할당하는 작업과 동일하지 않습니다. 예를 들어 unset() 함수를 호출하는 대신 다음 명령문이 사용된 경우:

PHP 코드 $my_array = "";

그러면 배열은 세 개의 인덱스(각각 0, 1, 2)와 연관된 세 개의 저장된 값("value", "", "another value")을 포함하게 됩니다.

배열 반복

PHP 배열은 해당 키와 관련된 값을 저장할 뿐만 아니라 기본적으로 배열에 기록된 순서대로 저장된 키-값 쌍의 정렬된 목록을 생성합니다. 이 배열 구조는 배열을 사용하여 배열의 전체 내용을 반복할 수 있도록 채택되었습니다. (PHP 배열 인덱스는 숫자일 필요가 없기 때문에 인덱스 값을 증가시키는 루프를 형성하는 것만으로는 이 작업을 수행하기 어렵다는 점에 유의해야 합니다.)

실제로 배열에는 일종의 숨겨진 포인터 시스템이 내장되어 있습니다. 저장된 각 키-값 쌍은 다음 항목을 가리키며, 이것의 한 가지 부작용은 현재 포인터가 맨 첫 번째 요소를 가리키고 반복 함수 중 하나에 의해 이동되지 않는 한 해당 요소를 계속 가리킨다는 것입니다.

각 배열에서 저장된 일부 특정 키-값 쌍은 현재 쌍으로 기억되며 배열의 반복 기능 중 특정 부분은 키와 값의 내부 목록을 통해 이 현재 쌍 마커를 이동하는 원리를 기반으로 합니다. 우리는 이 마커를 현재 포인터라고 부르겠지만, C/C++/C# 언어에서 작업하는 프로그래머가 이 개념을 해석한다는 의미에서 PHP 언어는 완전한 포인터를 지원하지 않는다는 점을 고려해야 합니다. 또한 이러한 의미로 사용되는 현재 포인터라는 용어는 배열 요소를 반복하는 방법을 설명하는 맥락에서만 나타납니다.

문제의 연결 리스트 포인터 시스템은 배열에 대한 정보를 얻고 조작하는 대체 방법입니다. 포인터 시스템은 키를 기반으로 배열에 쓰고 검색할 수 있는 시스템과 함께 존재합니다.

foreach 루프

배열의 순환 처리를 구성하려면 foreach 루프를 사용할 수 있습니다. 확실히 이 구조는 Perl의 foreach 구조에서 상속된 것처럼 보이지만 약간 이상한 구문 구조를 가지고 있습니다(그러나 이는 Perl의 유사한 구조의 이상한 구문 구조와 일치하지 않습니다). PHP에서 foreach 구문의 구문 구조는 두 가지 형태로 제공되며, 프로그램에서 어떤 것을 사용해야 하는지에 대한 결정은 배열의 키와 값을 모두 가져올지 아니면 값만 가져올지 여부에 따라 달라집니다.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); // foreach 루프를 사용하여 foreach ($fruits as $value) 값만 검색합니다. ( ​​echo $value."
"; ) 에코 "
"; // foreach 루프를 사용하여 값과 키를 검색합니다. foreach ($fruits as $key => $f) ( echo " ".$키."=> ".$f."
"; }

foreach 루프 사용

반복 함수

저는 foreach 구성을 좋아하지만 배열에 저장된 값을 반복하려는 상황에서만 정말 유용합니다. 처리 코드를 추가로 제어하려면 아래 표에 설명된 반복 함수를 사용해야 합니다.

루프에서 배열을 처리하는 함수
기능 옵션 부작용 반환 값
현재의() 결석한

현재 내부 "현재" 포인터가 가리키는 키-값 쌍의 값(또는 그러한 값이 없으면 false)

다음() 배열 표기법을 사용한 실제 매개변수 1개

포인터를 한 요소 전진시킵니다. 포인터가 이미 마지막 요소를 가리키고 있는 경우 이 함수는 포인터를 "배열 밖으로" 전진시키므로 current()에 대한 후속 호출은 false를 반환합니다.

포인터가 진행된 후 포인터가 가리키는 값(또는 현재 값이 없으면 false, 즉 포인터가 배열을 벗어났습니다.)

이전() 배열 표기법을 사용한 실제 매개변수 1개

포인터를 한 요소만큼 뒤로 이동합니다. 포인터가 이미 첫 번째 요소를 가리키고 있는 경우 포인터를 배열 밖으로 이동하여 "배열 시작 전"에 배치합니다.

포인터가 반대 방향으로 이동한 후 포인터가 가리키는 값(또는 현재 값이 없으면 false, 즉 포인터가 배열의 경계를 벗어났습니다.)

초기화() 배열 표기법을 사용한 실제 매개변수 1개

첫 번째 키-값 쌍(또는 배열이 비어 있는 경우 "배열 시작 전" 위치)을 가리키도록 포인터를 뒤로 이동합니다.

배열에 저장된 첫 번째 값, 배열이 비어 있으면 false

끝() 배열 표기법을 사용한 실제 매개변수 1개

포인터를 앞으로 이동하여 마지막 키-값 쌍으로 설정합니다.

현재 키-값 쌍 목록에 있는 마지막 값

위치() 배열 표기법을 사용한 실제 매개변수 1개

없음(이 함수는 current() 함수의 별칭입니다.)

포인터가 현재 가리키는 키-값 쌍의 값

각() 배열 표기법을 사용한 실제 매개변수 1개

포인터를 다음 키-값 쌍으로 앞으로 이동합니다.

포인터가 이동되기 전에 현재였던 키-값 쌍의 키와 값 데이터를 포함하는 배열(또는 현재 쌍이 없는 경우, 즉 포인터가 배열 경계 밖에 있는 경우 false 값)입니다. 반환된 배열에서 키와 값은 각각 배열의 자체 키인 0과 1 아래에 저장되고 배열의 자체 키인 "key"와 "value" 아래에 각각 저장됩니다.

array_walk() 첫 번째 매개변수는 배열 지정이 있는 실제 매개변수이고, 두 번째 매개변수는 각 키-값 쌍에서 호출되는 2개(또는 3개)의 실제 매개변수가 있는 함수의 이름이며, 세 번째 매개변수는 선택적 실제 매개변수입니다.

array_walk() 함수는 각 키-값 쌍의 두 번째 실제 매개변수로 지정된 함수를 호출합니다. 부작용은 전달된 함수의 부작용에 따라 달라집니다.

값 1을 반환합니다.

current() 함수는 포인터가 현재 가리키는 저장된 값을 반환합니다. 요소가 포함된 새로 생성된 배열에서 현재 포인터는 항상 첫 번째 요소를 가리킵니다. next() 함수는 먼저 포인터를 전진시킨 다음 포인터가 가리키는 현재 값을 반환합니다. 현재 포인터가 이미 마지막으로 저장된 값을 가리키고 있어 배열의 끝을 넘어야 하는 조건에서 next()가 호출되면 함수는 false를 반환합니다.

예를 들어 아래와 같이 반복 함수 current() 및 next()를 사용하여 배열의 내용을 출력하는 것을 고려해 보십시오.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); function print_all_next($array) ( $current = current($array); if ($current) echo $current."
"; else echo "포인터를 찾을 수 없습니다."; while ($current = next($array)) echo $current."
"; 에코 "
"; ) print_all_next($fruits); print_all_next($fruits); // 반복 호출을 시작하여 // 무슨 일이 일어나는지 확인합니다.

이 배열 출력 코드를 실행하면 다음 데이터가 다시 획득됩니다.


current() 및 next() 함수 사용

여기에 제공된 결과는 다음과 같은 질문을 불러일으킵니다. print_all_next()에 대한 두 번째 호출이 어떻게 동일한 결과를 생성했습니까? 모든 작업을 두 번째로 반복하기 위해 현재 포인터를 처음으로 어떻게 되돌렸습니까? 그 대답은 PHP 함수 호출이 값에 의한 호출이라는 사실에서 비롯됩니다. 따라서 매개변수의 복사본이 함수에 전달되고 함수는 매개변수 자체가 아닌 이러한 복사본에서 작동합니다. 따라서 함수에 대한 두 호출 모두에서 매개변수로 사용되는 배열의 수정되지 않은 복사본이 전달되며 배열 자체는 next() 호출의 영향을 받지 않습니다.

이전 예제에서는 foreach 루프와 부분적으로 유사한 함수를 직접 작성하는 방법을 보여줍니다. 그러나 foreach 루프를 사용하면 키도 표시할 수 있습니다. 함수를 사용하여 화면 출력에 키를 추가하여 예제를 수정해 보겠습니다. 열쇠():

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); function print_all_next($array) ( $current = current($array); $current_key = key($array); if ($current) echo " $현재_키=> ".$현재."
"; else echo "포인터를 찾을 수 없습니다"; while ($current = next($array)) ( $current_key = key($array); echo " $현재_키=> ".$현재."
"; ) 에코 "
"; ) print_all_next($fruits);

key() 함수를 사용하여 배열의 키 가져오기

어레이 변환 도구

PHP 언어는 사용하기 쉽도록 데이터를 배열 형식으로 저장한 후 데이터를 조작할 수 있는 다양한 기능을 제공합니다. 이 섹션에서 설명하는 함수의 공통적인 구별 기능은 모두 배열을 매개 변수로 사용하고, 이에 대해 특정 작업을 수행하고, 결과를 다른 배열 형식으로 반환한다는 것입니다(배열 정렬 함수에 대한 설명은 하나의 섹션에서 제공됩니다). 다음 섹션 중).

배열 조작 함수는 아래 표에 나와 있습니다.

배열 변환 함수
설명 기능
배열_키() 단일 매개변수를 배열로 취하고 값이 입력 배열의 키이고 키가 0부터 시작하여 순차적으로 증가하는 정수인 새 배열을 반환합니다.
배열_값() 단일 매개변수를 배열로 취하고 값이 입력 배열의 값이고 키가 0부터 시작하여 순차적으로 증가하는 정수인 새 배열을 반환합니다.
array_count_values() 단일 매개변수를 배열로 취하고 키가 입력 배열의 값이고 값이 입력 배열에 원래 값이 나타나는 횟수인 새 배열을 반환합니다.
배열_플립() 단일 매개변수를 배열로 취하여 키가 값이 되고 그 반대로 수정됩니다.
array_reverse() 단일 매개변수를 배열로 사용하고 키-값 쌍의 내부 순서를 반대로 바꿉니다. 배열에 숫자형 정수 키가 있으면 번호도 다시 매겨집니다.
혼합() 단일 매개변수를 배열로 사용하고 키-값 쌍의 내부 순서를 무작위로 변경합니다. 정수 키의 번호도 새 순서에 따라 다시 지정됩니다. shuffle() 함수는 rand() 난수 생성기를 사용하므로 이 함수를 호출하기 전에 먼저 srand() 함수를 호출하여 생성기를 초기화해야 합니다(이에 대해서는 다음 문서에서 설명합니다).
배열_병합() 두 개의 매개변수를 두 개의 배열로 가져와 병합하고 첫 번째 배열의 요소(원래 순서대로)와 두 번째 배열의 요소로 구성된 새 배열을 반환합니다.

이 함수는 연관 배열보다는 단순 연결 목록인 배열을 처리하는 데 가장 적합합니다. 두 개의 연관 배열에 동일한 키가 있는 경우 각 중복 키에 대한 값 중 하나만 결과 배열에 들어가고 두 번째는 파괴됨. 결과 배열에 숫자형 정수 키가 포함된 경우 새 순서에 따라 0부터 시작하여 번호가 다시 매겨집니다.

배열_패드() 입력 배열, 패딩된 ​​배열의 요소 수, 패딩된 ​​요소에 포함되어야 하는 값의 세 가지 매개 변수를 사용합니다. 다음 규칙에 따라 요소가 추가된 새 배열을 반환합니다. 채워진 배열의 요소 수가 입력 배열의 요소 수를 초과하는 경우 다음 할당 작업이 행에서 수행되는 것과 동일한 원리에 따라 배열의 오른쪽에 지정된 요소 수만큼 채워집니다. $my_array = $pad_value.

패딩된 배열의 요소 수에 대해 지정된 값이 음수이면 배열이 오른쪽(끝)이 아닌 왼쪽(시작)에 패딩된다는 점을 제외하면 양수인 것처럼 패딩이 발생합니다. 입력 배열의 요소 수가 패딩된 배열의 요소 수를 초과하는 경우 이 함수를 실행해도 아무런 효과가 없습니다.

배열_슬라이스() 입력 배열, 정수 오프셋, (선택 사항) 정수 길이 값의 세 가지 매개변수를 사용합니다. 키-값 쌍 목록의 하위 시퀀스인 이전 배열의 조각인 새 배열을 반환합니다. 조각의 시작 및 끝 요소는 오프셋과 길이에 의해 결정됩니다. 양수 오프셋 값은 시작 요소가 배열의 처음부터 계산된 요소임을 나타내고, 음수 오프셋 값은 끝부터 계산된 요소를 나타냅니다.

선택적 길이 매개변수는 양수 또는 음수일 수도 있습니다. 양수 값은 array_slice()가 생성해야 하는 조각의 길이를 지정하고, 음수 값은 배열 끝부터 계산하여 조각이 끝나야 하는 요소를 지정합니다. 길이 매개변수가 없으면 선택된 조각은 배열이 끝날 때까지 계속됩니다.

array_splice() 배열의 조각(잘라낸 부분으로 간주됨)을 제거하고 이를 다른 배열의 내용으로 바꿉니다. 입력 배열, 오프셋, 선택적 정수 길이 값, 선택적 대체 배열 등 4개의 매개변수를 사용합니다. 입력 배열에서 제거된 절단 부분을 포함하는 새 배열을 반환합니다. 삭제할 슬라이스를 지정하는 offset 및 length 매개변수 사용 규칙은 위에서 설명한 array_slice() 함수와 동일합니다.

대체 배열이 지정되지 않은 경우 이 함수는 입력 배열의 잘린 부분을 단순히 (파괴적으로) 제거하고 반환합니다. 대체 배열이 있는 경우 제거된 부분 대신 해당 배열의 요소가 삽입됩니다.

예제를 사용하여 이러한 기능을 더 자세히 살펴보겠습니다.

키와 값 가져오기

array_keys() 함수는 입력으로 주어진 배열의 키를 저장된 값인 새 배열의 형태로 반환합니다. 새 배열의 키는 0부터 시작하여 자동으로 증가하는 정수 형태의 일반 인덱스입니다. array_values() 함수는 저장된 값이 원래 배열의 값이라는 점을 제외하고는 정확히 동일한 작업을 수행합니다.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); echo "키 배열:
"; foreach (array_keys($fruits) as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; ) 에코 "
값 배열:
"; foreach (array_values($fruits) as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; }

array_keys() 및 array_values() 함수를 사용하여 소스 배열에서 키 및 값 배열 가져오기

분명히 문제의 두 번째 함수(array_values())의 결과는 그다지 흥미롭지 않습니다. 왜냐하면 이 함수는 실제로 원래 배열을 가져와 새 배열을 생성하고 그 키는 순차적으로 증가하는 숫자로 대체되기 때문입니다.

array_count_values() 함수를 사용하면 약간 더 유용한 작업(순서 문제를 해결할 때 큰 도움이 될 수 있음)을 수행할 수 있습니다. 이 함수는 배열을 매개 변수로 사용하고 이전 값이 새 키로 변환되고 새 값은 각 이전 값이 원래 배열에 나타나는 횟수를 나타내는 새 배열을 반환합니다.

미러링, 반전 및 무작위 셔플링

위에서 설명한 것보다 덜 일반적으로 사용되는 함수는 배열 키를 값으로 또는 그 반대로 변환하는 array_flip() 함수입니다. 배열 키는 고유함을 보장하지만 배열 값은 고유함을 보장하지 않는다는 점에 유의해야 합니다. 이로 인해 원래 배열의 중복 값은 새 배열의 동일한 키로 변환됩니다. 따라서 원래 키 중 하나만 유지되며, 이는 해당하는 새 값이 됩니다.

배열 반전은 덜 복잡한 작업입니다. array_reverse()는 키-값 쌍이 역순으로 포함된 새 배열을 반환합니다.

임의성의 추가 요소를 프로그램에 도입해야 하는 경우 shuffle() 함수를 사용하여 이를 수행할 수 있습니다. shuffle() 함수는 배열을 매개변수로 사용하고 배열 요소의 순서를 무작위로 변경합니다.

다음 예에서는 이러한 함수의 사용을 보여줍니다.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); // array_flip() echo "초기 배열:
"; foreach ($fruits as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; ) 에코 "
배열_플립():
"; $fruits = array_flip($fruits); foreach ($fruits as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; ) // array_reverse() echo "
소스 배열:
"; $array = range(1,5); foreach ($array를 $value로) ( ​​echo $value." "; ) echo "
함수 사용 후 배열 array_reverse():
"; $array = array_reverse($array); foreach ($array as $value) ( ​​​​echo $value." "; ) // shuffle() echo "

소스 배열:
"; $array = range(1,10); foreach ($array를 $value로) ( ​​echo $value." "; ) echo "
함수 사용 후 배열 혼합():
"; srand((double)microtime()*1000000); // 난수를 생성하는 데 사용됨 shuffle($array); foreach ($array as $value) ( ​​​​echo $value." "; )

array_flip(), array_reverse(), shuffle() 함수 사용

이 기사에 제시된 다른 많은 배열 함수와 달리 shuffle() 함수는 다음과 같습니다. 파괴적인. 즉, 새로 생성된 배열을 반환하는 것이 아니라 매개변수로 주어진 배열에 직접 적용하고 수정한다는 의미입니다. (새 객체를 반환하고 해당 매개변수를 변경하지 않는 함수를 일반적으로 생성적 또는 비파괴적이라고 합니다.) 무엇보다도 이는 문제의 무작위 순서 섞기 함수를 호출하는 올바른 방법이 다음과 같지 않음을 의미합니다.

PHP 코드 $array = 셔플($array); // 디자인이 잘못되었습니다!

배열 요소 병합, 추가, 잘라내기 및 붙여넣기

예를 들어 더 완전한 목록을 얻기 위해 두 개의 배열을 병합해야 하는 경우 array_merge() 함수를 사용할 수 있습니다. 이 함수는 두 개 이상의 배열을 매개변수로 사용하고 키 번호를 다시 매긴 새 배열을 반환하며, 두 번째 배열은 첫 번째 배열 끝에 추가됩니다. 예를 들어:

PHP 코드 $new_array = array_merge(범위(0,2), 배열(5,6,7), 배열(10,11)); //

array_pad() 함수는 배열의 크기를 늘리기 위해 지정된 개수의 선행 또는 후행 키-값 쌍을 생성하는 데 사용됩니다. 이 함수는 입력 배열을 첫 번째 매개변수로 사용합니다. 이 매개변수 뒤에는 배열이 증가되는 요소 수와 추가 요소에 할당된 값이 와야 합니다. 두 번째 매개변수로 양의 정수를 지정하면 배열의 끝 부분이 채워지고, 음의 정수를 지정하면 배열의 시작 부분이 채워집니다. 두 번째 매개변수가 배열 크기보다 작으면 패딩이 수행되지 않습니다.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); foreach (array_pad($fruits, 10, "empty") as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; }

array_pad() 함수를 사용하여 배열 크기 늘리기

자동으로 할당된 키는 다섯 번째 위치부터 계산되더라도 0부터 시작합니다.

조금 더 복잡한 것은 array_slice() 및 array_splice() 함수입니다. 첫 번째는 입력 배열 요소의 하위 집합을 반환하며 오프셋과 길이를 각각 두 번째 및 세 번째 매개 변수로 사용합니다. array_splice()는 array_slice()와 유사하지만 네 번째 매개변수를 취하는데, 이 매개변수는 입력 배열에 삽입할 임의 길이의 배열일 수 있습니다.

스택과 큐

스택과 큐는 포함된 개체에 특정 액세스 규칙을 적용하는 프로그래밍에 자주 사용되는 추상 데이터 구조로, 개체 유형 자체와는 거의 독립적인 규칙입니다. PHP 배열은 다른 유형의 데이터 구조를 에뮬레이트하는 문제를 해결하는 데 매우 적합하며, PHP 배열 요소의 엄격한 유형 지정이 부족하기 때문에 배열을 사용하여 스택 및 큐와 같은 데이터 구조를 쉽게 에뮬레이션하는 것이 가능합니다. PHP에는 이러한 목적으로 특별히 설계된 배열 함수가 있습니다. 프로그램이 그러한 기능만을 사용하는 경우 프로그래머는 문제의 데이터 구조가 배열을 기반으로 한다는 점조차 고려하지 않을 수 있습니다.

스택은 값을 저장하고 해당 값에 대한 LIFO(후입선출) 액세스 작업을 지원하는 컨테이너입니다. 즉, 스택은 저장된 값의 순서를 유지하고 가장 최근에 저장된 값을 검색(및 제거)하여 스택에 저장된 값을 검색할 수 있는 유일한 방법을 제공합니다.

스택 - "후에 들어간 것이 먼저 나온 것"

스택을 설명하는 데 사용되는 일반적인 비유는 서빙 라인 중 하나 앞에 있는 카페테리아의 쟁반 더미입니다. 고객은 쟁반을 맨 위에서 걷어내어 가져가고 직원은 쟁반을 쌓아서 지속적으로 보충합니다. 맨 위. 새 트레이는 기존 트레이 위에 배치할 수 있고 기존 트레이는 위에서 가져올 수 있지만, 나중에 배치된 트레이를 먼저 제거하지 않으면 이전에 배치된 트레이에 접근할 수 없습니다.

큐는 스택과 유사하지만 순차 큐(선입선출 - FIFO) 원칙에 따라 작동합니다. 일반적으로 이러한 대기열을 설명하기 위해 영국에서는 지정된 대기열이고 미국에서는 서비스를 기다리는 사람들의 체인에 비유가 사용됩니다. 줄을 서 있는 사람들에게 서비스를 제공할 때의 일반적인 규칙은 가장 오랫동안 줄을 서 있던 사람이 다음으로 서비스를 받아야 한다는 것입니다.

대기열 - "선입선출"

스택 작업을 위해 array_push() 및 array_pop() 함수가 사용됩니다. 기능 배열_푸시()매개변수로 초기 배열을 취하며, 그 뒤에는 스택에 푸시된 요소 수에 제한이 없습니다. 요소는 배열의 끝에 왼쪽에서 오른쪽으로 순서대로 삽입됩니다. 기능 배열_팝()이러한 배열을 매개변수로 사용하고 배열 끝에 있는 요소를 제거하여 해당 요소를 반환합니다.

배열 정렬

마지막으로, PHP에는 배열 정렬을 위한 많은 기능이 있습니다. 위에서 언급한 것처럼 키-값 연관이 배열에 적용되는 상황과 숫자 키가 요소의 순서가 변경될 때 변경되어야 하는 순서 정보로 처리되는 상황을 구별하기 어려울 수 있습니다. 다행스럽게도 PHP는 이러한 각 상황 유형의 세부 사항을 고려한 변형 정렬 기능을 제공합니다. 또한, PHP를 사용하면 요소를 오름차순이나 내림차순으로 정렬할 수 있을 뿐만 아니라 사용자가 제공하는 정렬 기능도 사용할 수 있습니다. 정렬 기능의 이름은 축약되어 있지만 기능의 목적을 결정할 수 있는 특수 문자 지정(이름에서 sort라는 단어가 포함된 부분 제외)이 포함되어 있습니다. 다음은 이러한 문자 지정에 대한 간략한 설명입니다.

    선행 "a"는 함수가 값을 기준으로 정렬하지만 키-값 쌍 간의 연관성을 존재하는 대로 유지한다는 의미입니다.

    선행 "k"는 정렬이 키별로 이루어지지만 키-값 연관은 유지됨을 나타냅니다.

    앞에 "a" 또는 "k"가 없으면 정렬이 값별로 수행되지만 키-값 연관은 유지되지 않음을 의미합니다. 특히 숫자 키의 번호는 새 순서를 반영하여 다시 지정됩니다.

    sort 단어 앞의 문자 "r"은 정렬 순서가 반대라는 의미입니다.

    초기 "u"는 함수가 정렬할 두 요소의 순서를 지정하는 사용자 정의 함수의 이름인 두 번째 매개변수를 취함을 나타냅니다.

이러한 간단한 규칙은 다음 정렬 기능에서 혼동을 피하는 데 도움이 됩니다.

배열 정렬 기능
기능 설명
정렬() 단일 매개변수를 배열로 허용합니다. 키-값 쌍을 값별로 정렬하지만 키-값 매핑은 변경되지 않은 상태로 유지합니다. 연관배열로 작업할 때 매우 편리합니다.
정렬() asort()와 동일하지만 내림차순으로 정렬됩니다.
ksort() 단일 매개변수를 배열로 허용합니다. 키-값 쌍을 키별로 정렬하지만 키-값 연결은 변경되지 않은 상태로 유지합니다.
크르소트() ksort()와 동일하지만 내림차순으로 정렬됩니다.
종류() 단일 매개변수를 배열로 허용합니다. 값을 기준으로 배열의 키-값 쌍을 정렬합니다. 새로운 값 순서와 일치하도록 키 번호를 다시 매길 수 있습니다.
정렬() sort()와 동일하지만 내림차순으로 정렬합니다.
우아정렬() 비교 함수를 사용하여 값을 기준으로 키-값 쌍을 정렬합니다. 값의 실제 순서가 사용자 정의 순서 함수의 이름인 두 번째 매개변수에 의해 결정된다는 점을 제외하면 asort()와 유사합니다. 이 함수는 첫 번째 매개변수가 두 번째 매개변수 앞에 오면(비교 함수에 의해 결정됨) 음수를 반환해야 하고, 첫 번째 매개변수가 두 번째 매개변수 뒤에 오면 양수를 반환해야 하며, 비교되는 요소가 동일하면 0을 반환해야 합니다.
영국정렬() 비교 함수를 사용하여 키-값 쌍을 키별로 정렬합니다. 값이 아닌 키를 기준으로 정렬된다는 점을 제외하면 uasort()와 유사합니다.
유소트() 제공된 비교 기능을 사용하여 값별로 배열을 정렬합니다. 키-값 연관이 유지되지 않는다는 점을 제외하면 uasort()와 유사합니다(sort()와 마찬가지로).

다음은 알파벳순 정렬의 간단한 예입니다.

PHP 코드 $fruits = array("오렌지" => "주황색", "빨간색" => "사과", "노란색" => "바나나", "녹색" => "배"); sort($과일); foreach ($fruits as $key => $value) ( ​​​​echo " ".$키."=> ".$값."
"; }

sort() 함수 사용

보시다시피 sort() 함수는 값을 정렬했을 뿐만 아니라 텍스트 키를 숫자 인덱스로 대체했습니다. 이 동작을 원하지 않으면 asort() 함수를 사용해야 합니다.

정규식 숫자 분석 및 수학 연산 1 2 3 4 5 6 7 8 9 10

기능 PHP에서 배열 작업프로그래밍할 때 배열을 자주 사용해야 한다는 점을 고려하면 이는 놀라운 일이 아닙니다. 그리고 이 기사에서는 우리가 만든 주요 기능을 분석할 것입니다. PHP에서 배열 작업개발자.

먼저 요소가 배열에 있는지 확인하는 가장 간단한 함수를 살펴보겠습니다. 함수가 호출됩니다. in_array():

$arr = array("Num", "Str", "Int");
if (in_array("Str", $arr)) echo "요소 발견";
?>

예제에서 볼 수 있듯이 이 함수는 두 번째 매개변수로 지정된 배열의 값 중 첫 번째 매개변수가 있는지 확인합니다. 그리고 반환 진실, 요소가 발견된 경우 또는 거짓, 찾을 수 없는 경우. 특히 진보한 사람들은 이렇게 질문할 것입니다. “하지만 다음과 같은 것들은 어떻습니까? 0 그리고 거짓, 이는 서로 다른 값이지만 PHP는 이를 동일하게 간주하기 때문입니다." in_array() 함수선택적인 세 번째 매개변수도 있는데, 값이 있는 경우 진실, 함수는 값뿐만 아니라 유형도 확인합니다.

$arr = array(0, "Str", "Int");
if (in_array(false, $arr, true)) echo "요소 발견";
else echo "요소를 찾을 수 없습니다";
?>

또 다른 매우 유용한 기능은 배열_고유()이는 배열을 가져와서 중복된 값이 없는 배열을 반환합니다.

$arr = array(3, 5, "발", 3, "발", 7);
$arr_uniq = array_unique($arr);
print_r($arr_uniq);
?>

스크립트를 실행해 보면 알 수 있듯이 결과 배열에는 중복된 값이 없습니다.

매우 중요한 함수는 원본에서 배열의 일부를 추출하는 함수입니다(함수와 유사). 하위 문자열(), 문자열에만 해당):

$arr_2 = array_slice($arr, 3);
print_r($arr_2);
?>

이 함수는 두 개의 매개변수, 즉 원래 배열과 새 배열이 시작되어야 하는 요소의 번호를 사용합니다. 번호 매기기는 0부터 시작됩니다.). 보시다시피, 새 배열은 두 번째 매개변수에 지정된 번호의 요소부터 원래 배열의 끝까지 구성됩니다. 또한 세 번째 매개변수를 추가하면 새 배열의 길이를 설정할 수 있습니다.

$arr = array(12, 10, 15, "이름", "일부", -0.5);
$arr_2 = array_slice($arr, 3, 2);
print_r($arr_2);
?>

결과적으로 다음이 표시됩니다. " 배열( => 이름 => 일부)".

이제 마지막 기능 그룹으로 넘어 갑시다. 배열 정렬 기능. 하지만 먼저 목록과 연관 배열의 차이점을 상기시켜 드리겠습니다. 목록인덱스가 오름차순으로 정렬된 숫자인 배열입니다. 0 . ㅏ 연관 배열인덱스는 일반적으로 키라고 하는 문자열인 배열입니다. 정렬할 때 이것이 왜 그렇게 중요한가요? 목록을 정렬하는 경우 링크가 저장되는지는 전혀 중요하지 않습니다. " 핵심 가치", 인덱스는 값을 식별하는 데 사용되지 않고 값에 액세스하는 데만 사용되기 때문입니다. 그리고 연관 배열에서 가장 중요한 것은 연결입니다. " 핵심 가치"이므로 정렬 시 보존할 필요가 있습니다.

간단한 것부터 시작해 보겠습니다. 목록을 정렬하는 것입니다. 이를 위해 sort() 및 rsort() 함수. 첫 번째 함수는 배열을 오름차순으로 정렬하고 두 번째 함수는 내림차순으로 정렬합니다.

$arr = 배열(15, 12, "문자열", 40, -2, 0, 12);
정렬($arr);
print_r($arr);
에코 "
";
rsort($arr);
print_r($arr);
?>

여기서 모든 것이 명확하다고 생각합니다.

이제 다음으로 넘어 갑시다 연관 배열 정렬을 위한 함수: 정렬()그리고 정렬(). 그들은 모든 일을 동일하게 수행하지만 연결은 " 핵심 가치"가 저장되었습니다:

$arr = array("이름" => "토미", "나이" => "34", "레벨" => "15");
정렬($arr);
print_r($arr);
에코 "
";
정렬($arr);
print_r($arr);
?>

이제 살펴 보겠습니다. 연관 배열의 키를 기준으로 정렬하는 함수: ksort()그리고 크르소트():

$arr = array("이름" => "토미", "나이" => "34", "레벨" => "15");
ksort($arr);
print_r($arr);
에코 "
";
krsort($arr);
print_r($arr);
?>

여기에서는 모든 것이 투명하다고 확신합니다. 그리고 명확하지 않은 부분이 있으면 스크립트를 실행하고 결과를 분석하세요.

그리고 마지막으로 생각해 봅시다. 사용자 정의 정렬 기능: 우아정렬()그리고 영국정렬(). 두 함수 모두 배열과 매개변수라는 두 가지 매개변수를 사용합니다. 사용자 정의 정렬 기능. 이 함수는 값을 기준으로 배열을 정렬합니다. uksort() 함수키를 기준으로 배열을 정렬합니다. 예를 들어 다음 스크립트를 고려해보세요.

함수 cmp($x, $y) (
($x == $y)인 경우 0을 반환합니다.
if ($x == 1) 1을 반환합니다.
if ($y == 1) -1을 반환합니다.
($x > $y)인 경우 1을 반환합니다.
그렇지 않으면 -1을 반환합니다.
}
$arr = array("A" => 1, "C" => 3, "B" => 2);
uasort($arr, "cmp");
print_r($arr);
에코 "
";
uksort($arr, "cmp");
print_r($arr);
?>

보시다시피, 우리는 숫자 "에 따라 자체 정렬 규칙을 작성했습니다. 1 "는 항상 다른 값보다 큽니다. 숫자 중 하나도 "가 아닌 경우 1 ", 그런 다음 일반적인 규칙에 따라 비교합니다. 따라서 PHP우리가 함수에 전달한 이름인 비교 함수에 설명된 규칙에 따라 배열을 정렬합니다. 우아정렬()그리고 영국정렬().

그게 다 주요 내용이에요 배열을 이용한 다양한 조작을 위한 함수. 물론 이것이 개발자가 우리를 위해 해준 전부는 아니지만 이러한 기능은 정말 중요하며 실제로 정기적으로 사용됩니다.

나는 오랫동안 내 블로그에 글을 쓰지 않았습니다. 일과 공부는 나에게 휴식을 주지 않는다. 최근에는 PHP에 대한 주문이 많이 들어오고 있으며, 데이터 배열 작업을 해야 하는 경우가 많습니다. PHP에 대한 나의 지식은 놀랍지 않기 때문에 끊임없이 문서를 살펴봅니다. 오늘 저는 PHP에서 배열 작업에 유용한 기능이 포함된 미니 치트 시트를 작성하는 아이디어를 생각해냈습니다. 이 치트 시트는 나에게만 유용할 것 같지 않습니다.

제가 생각하는 가장 자주 사용되는 기능은 개수("배열"). count 함수는 배열의 요소 수를 반환합니다. 작업 예:

$myArr = array("존", "이반", "올렉"); 에코 카운트($myArr);

$ myArr = array ("John" , "Ivan" , "Oleg" ) ;

에코 카운트($myArr);

실제로 count 함수는 배열뿐만 아니라 일반 변수 및 다차원 배열에서도 작동할 수 있습니다. 몇 가지 예를 더 들어보겠습니다.

$myArr = 배열(배열(1, 2, 3), 배열(1, 2), 3); 에코 카운트($myArr); //3개 출력 echo count($myArr, COUNT_RECURSIVE); //전체 요소 수를 표시합니다. (8) $myVar = "Ivan"; 에코 개수($myVar); //1개 출력 echo count(NULL); //0을 출력합니다.

$myArr = 배열(배열(1, 2, 3), 배열(1, 2), 3);

에코 카운트($myArr); //출력 3

에코 개수($myArr, COUNT_RECURSIVE); //전체 요소 수를 표시합니다(8).

$ myVar = "이반" ;

에코 개수($myVar); //출력 1

에코 카운트(NULL); //0을 출력합니다.

count($myArr, COUNT_RECURSIVE)가 8을 반환하는 이유를 이해하지 못하는 사람이 있으면 설명하겠습니다. $myArr 배열은 3개의 요소(배열 2개와 숫자 1개)로 구성됩니다. $myArr 배열의 첫 번째 요소는 3개 요소의 배열입니다. 이는 이미 총 6개의 요소가 있음을 의미합니다. 여기에 두 번째 배열의 요소 2개를 더 추가하면 8개가 됩니다.

계속하세요. 다음으로 유용한 기능은 in_array("검색 값", "배열", ["유형 일치"]). in_array 함수는 전달된 배열의 검색 값으로 요소를 검색합니다. 발견되면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 세 번째 인수는 유형 일치의 필요성을 담당합니다. TRUE로 설정되면 검색된 값이 값뿐만 아니라 유형도 일치해야 함을 의미합니다. 또한 문자열 비교에서는 대소문자를 구분합니다. 예:

$myArr = array("Abc", "3", 2); echo in_array("Abc", $myArr); //1개 출력 echo in_array("abc", $myArr); //출력 없음 echo in_array("2", $myArr); //1개 출력 echo in_array("2", $myArr, TRUE); //아무것도 출력하지 않습니다.

echo in_array ("Abc" , $myArr ) ; //출력 1

echo in_array ("abc" , $myArr ) ; //아무것도 출력하지 않습니다.

echo in_array ("2" , $myArr ) ; //출력 1

echo in_array ("2" , $myArr , TRUE ) ; //아무것도 출력하지 않습니다.

$myArr = array("Abc", "3", 2); echo array_search("Abc", $myArr); //0을 출력합니다. echo array_search("abc", $myArr); //출력 없음 echo array_search("2", $myArr); //2개 출력 echo array_search("2", $myArr, TRUE); //아무것도 출력하지 않습니다.

$myArr = 배열 ​​("Abc" , "3" , 2 ) ;

echo array_search ("Abc" , $myArr ) ; //0을 출력합니다.

echo array_search ("abc" , $myArr ) ; //아무것도 출력하지 않습니다.

echo array_search ("2" , $myArr ) ; //출력 2

echo array_search ("2" , $myArr , TRUE ) ; //아무것도 출력하지 않습니다.

복잡한 것은 없습니다. 우리 기사의 다음 손님은 array_values("배열")그리고 array_keys("배열"). 그들이 어떻게 작동하는지 추측하는 것은 어렵지 않습니다. array_values ​​함수는 전달된 배열의 전체 값을 포함하는 새 배열을 반환하고, array_keys는 전달된 배열의 키를 반환합니다. 예:

$myArr = array("A" => 1, "B" => 2, "C" => 3); $valuesArr = array_values($myArr); $keysArr = array_keys($myArr); print_r($valuesArr); print_r($keysArr);

$ myArr = array ("A" =& gt ; 1 , "B" =& gt ; 2 , "C" =& gt ; 3 ) ;

$valuesArr = array_values($myArr);

$keysArr = array_keys($myArr);

print_r($valuesArr);

print_r($keysArr);

실행 결과:

배열( => 1 => 2 => 3) 배열( => A => B => C).

계속하세요. 배열 정렬 기능. 먼저 살펴 보겠습니다. sort("배열", ["플래그"]). 배열을 오름차순으로 정렬하고, 문자열인 경우 알파벳순으로 정렬합니다. 다음 매개변수를 추가 플래그로 설정할 수 있습니다. SORT_REGULAR(약요소의 일반적인 비교), SORT_NUMERIC(요소의 수치 비교), SORT_STRING(요소의 문자열 비교). 이 링크의 공식 문서에서 자세한 내용을 읽을 수 있습니다. 기능 사용 예:


"; sort($myArr); print_r($myArr); 에코 "
"; sort($myArr, SORT_STRING); print_r($myArr); echo "
";

print_r($myArr);

에코 "
" ;

정렬($myArr);

print_r($myArr);

에코 "
" ;

정렬($myArr, SORT_STRING);

print_r($myArr);

에코 "
" ;

결과:

배열 ( => 10 => 1 => 12 => 13 => 2 => 3 => 11 => 100)
배열 ( => 1 => 2 => 3 => 10 => 11 => 12 => 13 => 100)
배열 ( => 1 => 10 => 100 => 11 => 12 => 13 => 2 => 3)

간단하지 않나요? 비슷한 기능이 있지만 역순으로 정렬됩니다. rsort("배열", ["플래그"]). 또한 유사한 작업을 수행하지만 동시에 키 값을 저장하는 두 가지 기능이 더 있습니다. 이것 asort("배열", ["플래그"])- 키 저장을 통한 간단한 정렬 및 arsort("배열", ["플래그"])— 키를 유지하면서 역순으로 정렬합니다. asort 및 arsort 함수가 작동하는 방식에 대한 유사한 예:

$myArr = 배열(10, 1, 12, 13, 2, 3, 11, 100); print_r($myArr); 에코 "
"; asort($myArr); print_r($myArr); 에코 "
"; arsort($myArr); print_r($myArr); 에코 "
";

$myArr = 배열(10, 1, 12, 13, 2, 3, 11, 100);

print_r($myArr);

에코 "
" ;

정렬($myArr);

print_r($myArr);

에코 "
" ;

정렬($myArr);

print_r($myArr);

에코 "
" ;

결과는 약간 다릅니다.

배열 ( => 10 => 1 => 12 => 13 => 2 => 3 => 11 => 100)
배열 ( => 1 => 2 => 3 => 10 => 11 => 12 => 13 => 100)
배열 ( => 100 => 13 => 12 => 11 => 10 => 3 => 2 => 1)

이 예에서는 SORT_STRING 플래그를 사용하지 않았습니다. 이러한 기능 외에도 키를 기준으로 배열을 정렬할 수 있습니다. 이에 대한 기능이 있습니다 ksort("배열", ["플래그"])그리고 krsort("배열", ["플래그"]), 유사하게 작동하므로 예를 생략하겠습니다 :).

내 방식대로 배열을 정렬하고 싶다면 어떻게 해야 하나요? 함수가 도움이 될 수 있습니다. usort("배열", "함수")그리고 uksort("배열", "함수"), 맞춤 요소 비교 기능에 따라 정렬을 수행합니다. 즉, 프로그래머는 배열 요소를 하나씩 비교하는 함수를 설명해야 하며 usort 또는 uksort는 비교 결과에 따라 배열의 요소를 자체적으로 정렬합니다. 예제는 조금 더 복잡합니다. 먼저 배열의 구조를 설명하겠습니다. 문자열과 숫자를 포함하는 배열로 구성됩니다. 예를 들면 다음과 같습니다.

$myArr = array(array(1, "String1"), array(2, "String2"), array(3, "String3"));

$myArr = array (array (1, "String1" ) , array (2 , "String2" ) , array (3 , "String3" ) ) ;

이제 요소를 교환하고 내부 배열의 첫 번째 요소를 기준으로 정렬해 보겠습니다. 암호:

//우리의 배열 $myArr = array(array(2, "String2"), array(3, "String3"), array(1, "String1")); //요소 비교 함수 function Compare($a, $b) ( if ($a< $b) return -1; elseif ($a >$b) 1을 반환합니다. 0을 반환합니다. ) //배열 정렬 usort($myArr, "compare"); //print_r($myArr) 표시;

//우리 배열

$myArr = array (array (2, "String2" ) , array (3 , "String3" ) , array (1 , "String1" ) ) ;

//요소 비교 함수

함수 비교 ($a, $b) (

if ($ a [ 1 ] & lt ; $ b [ 1 ] )

반환 - 1 ;

elseif($a[1]>$b[1])

1을 반환합니다;

0을 반환합니다;

//배열 정렬

usort($myArr, "비교");

//표시하다

print_r($myArr);

프로그램 결과:

배열( => 배열( => 1 => 문자열1) => 배열( => 2 => 문자열2) => 배열( => 3 => 문자열3))

보시다시피 복잡한 것은 없습니다. 배열은 내부 배열의 첫 번째 요소를 기준으로 정렬됩니다. 비교 함수는 3개의 값을 반환할 수 있습니다. "양수"이면 정렬 함수에서 첫 번째 요소가 두 번째 요소보다 크다고 간주하고, "음수"이면 그 반대를 의미하고, "0"이면 요소가 같다는 의미입니다. ursort 함수는 동일하게 작동하지만 역순으로 정렬합니다. 그런데 이 경우에 올바른 비교 함수를 지정하기만 하면 usort를 사용하여 내림차순으로 정렬하는 것이 가능합니다.

다음에는 무엇이 우리를 기다리고 있을까 array_walk("배열", "함수", ["선택적 인수"]). 이 함수는 배열을 반복하여 값과 키 쌍을 사용자 정의 함수에 전달합니다. 추가 인수가 제공되면 사용자 정의 함수에 세 번째 인수로 전달됩니다. 연산 중에 오류가 발생하지 않으면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 더 명확하게 하기 위해 예를 살펴보겠습니다.

$myArr = array("A" => "이반", "B" => "존", "C" => "밥"); function walker_function($value, $key, $additional) ( echo $key." ".$additional." ".$value."
"; ) array_walk($myArr, "walker_function", "is");

$ myArr = array ("A" =& gt ; "Ivan" , "B" =& gt ; "John" , "C" =& gt ; "Bob" ) ;

함수 walker_function ($value, $key, $additional) (

$key를 에코하세요. " " . $추가. " " . $value. "
" ;



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: