/ / PHP : 배열에 배열. PHP 배열 검색

PHP : 배열에 배열. PHP 배열 검색

프로그래밍은 구문과 의미입니다. 첫 번째 규칙은 언어 규칙에 따라 결정되고 두 번째 규칙은 개발자의 경험에 의해 결정됩니다. 배열과 관련하여 개발자는 의미 론적으로 구문을 객관적으로로드 할 수 있습니다. 이것은 객체는 아니지만 전통적인 의미의 배열은 아닙니다. PHP를 사용하면 다양한 유형의 변수 배열을 만들 수 있습니다. 배열의 요소는 실제의 의미를 가지는 실제의 알고리즘을 가지는 배열을로드 할 수있는 함수가 될 수 있습니다.

구문은 안정적이지만 버전에 따라 다릅니다.버전과 호환 될 수는 없습니다. 이식성 프로그램 - 지난 세기의 잊혀진 업적. 의미론이 발전하고 항상 모든 언어 버전에서 적용될 수 있습니다. 언어 규칙이 심지어 계획되지 않았다는 사실을 표현하기 위해 통사 구조를 사용하는 전통이되었습니다. 배열 예제에서 가장 간단하게 이해할 수 있습니다.

배열 만들기

PHP의 배열은 편리한 문법과 기능을 가지고 있습니다. 이러한 유형의 데이터는 사전에 설명 될 수 있지만 필요에 따라 즉석에서 배열을 만드는 것이 편리합니다.

public $ aNone = array (); // 배열은 기술되고 아무것도 포함하지 않는다.

public $ aFact = array ( "avocado", "peach", "cherry"); //이 배열에는 세 가지 요소가 있습니다.

조건을 확인하면서 배열 만들기 :

$ cSrcLine = "파싱 된 데이터의 문자열";

for ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // 뭔가 입력

if (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "예"; // PHP 배열에 추가

} else {

$ aResult [] = "아니오";

}

}

이 예를 실행 한 결과,값이 "Yes"또는 "No"의 행만이되는 13 개의 요소의 배열입니다. 요소는 0에서 12 같은 효과를 문자열로 미리 녹음 된 "미래"PHP 배열하여 얻을 수 있습니다에 대한 인덱스를해야합니다 :

$ cFutureArray = "";

for ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // 뭔가 입력

if ($ i> 0) {$ cFutureArray. = "|"; }

if (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Yes";

} else {$ cFutureArray. = "No"; }

}

$ aResult = 폭발 ( "|", $ cFutureArray);

문자열에 PHP 배열

다차원 배열

많은 사이트 관리 시스템 (SMS)"대규모로"배열을 사용하십시오. 한편으로 이것은 좋은 습관 인 반면, 응용이 어려워집니다. 저자가 "PHP 배열을 배열로"라는 교리를 이해한다고해도, 개발자는 복잡한 표기법에 익숙해 져야 할뿐만 아니라 오용되지 않아야합니다. 종종 잠시 후 제작자는 처음에 그가 쓴 것을 오랫동안 기억할 것입니다.

반환 배열 (

"view_manager"=> array (41, "template_path_stack"=> 배열 (__DIR__. "/../view",),

"router"=> array ( "routes"=> array ( "sayhello"=> array (

"type"=> "ZendMvcRouterHttpLiteral",

"options"=> array ( "route"=> "/ sayhello", "defaults"=> array (

"controller"=> "HelloworldControllerIndex", "action"=> "index",))))))))))

"controllers"=> 배열 ( "invokables"=> 배열 (

"HelloworldControllerIndex"=> "HelloworldControllerIndexController"))

);

이것은 ZF에서 "PHP array in array"의 예제입니다.2. 처음에는별로 고무되지 않았지만,이 프레임 워크가 성공적으로 작동합니다 (ZendSkeletonApplication / module / Helloworld / config / module.config.php 모듈 예제).

PHP는 배열의 요소를 삭제

배열은 중요한 데이터 구조입니다.디자인 및 개발. 한 번 인기있는 다 변수 버전이지만 시간이 지남에 따라 최대 2 ~ 3 차원 배열이 필요했습니다. 따라서 더 쉽고 이해하기 쉽지만 전문적인 관점에서 무엇인가가 번식하기 시작하면 문제의 진술이나 코드에있는 어떤 것이 사실이 아닙니다.

간단하고 접근 가능하며 이해할 수있는

PHP에서 배열에 배열을 만드는 것이 가장 좋습니다.2 개 또는 3 개의 레벨로 제한됩니다. PHP의 안정성과 안정성에도 불구하고 구문 구조를 처리하는 과정에서 오류를 허용합니다. 좋은 코드 편집기를 사용하고 대괄호와 쉼표를 정확히 계산하는 데 익숙해지면이 사실을 용인 할 수 있습니다. 그러나 PHP는 데이터 유형을 제어하지 않습니다 (이것은 현대 프로그래밍의 업적입니다). 개발자는 의미 오류를 연습 할 수 있습니다.

규칙은 변수의 유형을 제어하거나의미론을 구문으로 변환한다는 자체 아이디어는 종종 용인 할 수없는 사치입니다. 이것은 스크립트 속도의 손실, 코드의 가독성, ... 따라서 코딩의 단순성은 항상 중요한 가치가 있습니다.

PHP는 중요한 부정적인 특징이 있습니다 : 불확실성이 생기면 스크립트가 중단됩니다. 모든 디버거가 예기치 않은 상황에 대처하는 것은 아니며 개발자의 경험과 직관에 달려 있습니다. 알고리즘이 간단할수록 정보가 구조화 될수록 오류를 발견하거나 전혀 인정하지 않을 가능성이 커집니다.

첫 번째 배열이 나타 났을 때,서로 다른 유형의 데이터로부터 무언가를 창조하려는 어색한 시도 인 구조 형태의 데이터 변형이 제안되었습니다. 처음에는 생존하고 새로운 효율적인 구문을 습득했으며, 후자는 역사상으로 사라졌습니다.

단순 및 연관 배열

2 차원 배열을 기록하는 것은 또 다른 한 쌍입니다.브래킷은 "["및 "]"는, 예를 들면, $ aSrcData [1] [2] 항목에 액세스 수단 [2] 배열 [1], 배열 $ aSrcData 입력. PHP에서는 미리 데이터를 선언 할 필요가 없습니다. 신고 된 정보는 항상 존재 여부를 확인할 수 있습니다.

그때 만 무언가를 창조하는 것은 아주 효과적이며,필요할 때, 그것이 필요했던 형태로, 그리고 그 필요성이 사라지면 파괴하라. 의미있는 이름을 키 (인덱스)로 사용하면 알고리즘의 현재 위치의 컨텍스트에서 의미있는 구문을 읽을 수 있습니다.

$ aAnketa [ "name"] = "이바노프";
$ aAnketa [ "age"] = 42;
$ aAnketa [ "work"] = "감독";
$ aAnketa [ "active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa [ "name"] = "Petrov";
$ aAnketa [ "age"] = 34;
$ aAnketa [ "work"] = "관리자";
$ aAnketa [ "active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa [ "name"] = "Afanasyev";
$ aAnketa [ "age"] = 28;
$ aAnketa [ "work"] = "직장";
$ aAnketa [ "active"] = 거짓;
$ aTable [] = $ aAnketa;

$ sOne. = implode ( ";", $ aTable [1]). "<br/>"; // 문자열의 두 번째 PHP 배열
$ sOne. = $ aTable [1] [ "work"]; // 두 번째 배열의 한 요소 참조

이 예제의 결과 (첫 번째 배열은 보통이며, 키는 0으로 시작하고 두 번째 배열은 연관성이 있으며 "name", "age", "work", "active"라는 네 개의 키가 있습니다.) :

$ sOne = "Petrov; 34; 관리자; 1; 관리자";

이 간단한 예제에서는생성 된 설문지는 모든 직원에게 적용될 수 있습니다. 숫자가있는 번호가있는 직원 배열을 만들고 특정 직원이 필요한 경우 직원 번호로 선택하십시오.

조직에 단위가 있거나 존재하는 경우계절 근로자 또는 근무 연금 수령자를 별도로 확인해야하는 경우 ... "PHP array in array"디자인은 매우 편리하지만 결코 차원을 잃지 않아야합니다. 효과적인 솔루션을 구현하기 위해서는 2 차원 또는 3 차원이 한계점입니다.

PHP 배열 검색

배열 작업을위한 키

그것이 모든 것이 어떻게 작동하는지에 익숙하다면최근 몇 년 동안, 프로그래머가 어레이의 요소가 어떻게 저장되는지 정확히 알고 싶었고 직접 액세스 할 수 있기를 원했던 이진 시대의 전통은 완전히 잊혀졌습니다. 메모리에서 1 바이트 이상을 차지하는 많은 문자 인코딩이 있습니다. 단어 "비트"는 이제 비트 검색 연산에서만 발견 할 수 있지만 PHP 배열의 검색은 별도의 주제입니다. 요소에 대한 액세스는 간단하고 연관적일 수 있습니다. 첫 번째 경우, 배열 요소 (PHP에서 사용 가능한 유형을 가짐)는 0, 1, 2, ...로 번호가 지정됩니다. 두 번째 경우 프로그래머는 원하는 값에 액세스하기 위해 종종 "키"라고하는 자체 색인을 지정합니다.

$ aLine [ "fruit"] = "orange"; // 여기에 PHP 배열 key = "fruit"가 있습니다.

또는 (모든 것이 페이지 인코딩과 코드를 준수하도록)

$ aLine [iconv ( "utf-8", "CP1251", "fruit")] = iconv ( "utf-8", "CP1251", "orange");

$ aLine 배열에 새 값을 추가 할 때 :

$ aLine [] = iconv ( "utf-8", "CP1251", "peach");
$ aLine [iconv ( "utf-8", "CP1251", "vegetable")] = iconv ( "utf-8", "CP1251", "cucumber");
$ aLine [] = iconv ( "utf-8", "CP1251", "eggplant");

사이클의 결과로 :

foreach ($ aLine as $ ck => $ cv) {
$ cOne. = $ ck. "=". $ cv. "<br/>";
}

받을 것이다 :

과일 = 오렌지
0 = 복숭아
야채 = 오이
1 = 가지

PHP 배열 키 요소를 추가 할 때 "peach"와 "eggplant"가 0부터 순차적으로 형성되며,이 값을 지정하면이 값과 같습니다.

배열에서 요소 제거하기

PHP는 배열을 제거

가장 쉬운 방법은 PHP 배열 항목을 제거하는 것입니다.그것을 처리합니다. 이 경우, 예를 들어, 루프의 실행 결과로서, 원래의 어레이가 보여지고, 새로운 어레이가 형성되고, 불필요한 요소가 단순히 기록되지 않는다.

더 쉽게 할 수 있습니다. 마지막 예에 적용하는 경우 :

unset ($ aLine [0]); // PHP 배열 요소를 제거합니다.

결과는 다음과 같습니다.

과일 = 오렌지
야채 = 오이
1 = 가지

배열 요소 조작 옵션당신은 많은 것을 디자인 할 수 있습니다. 예를 들어 implode () 및 explode () 함수를 사용하면 PHP 배열을 하나의 구분 기호로 문자열에 쓰고 다른 구분 기호로 다른 배열로 역 어셈블 할 수 있습니다.

PHP에서 전체 배열을 간단히 제거하려면 다음과 같이 작성하면됩니다. unset ($ aLine);

이 정도면 충분합니다.

배열 검색

PHP는 특별한 검색 기능을 포함하고 있습니다.array_keys (), array_values ​​(), array_key_exists () 및 in_array ()를 사용하기 전에 PHP 배열에서 직접 검색을 수행 할 수있는 기능을 고려해야합니다.

PHP 배열 키

모든 프로젝트는 특정 주제 영역입니다.특히 구문의 일부가 구문으로 전송되고 매우 특정한 의미있는 키 집합으로 표현 될 때 생성 된 배열. 따라서 의미있는 지정이 가능한 자체 검색 기능을 수행 할 수 있습니다.

PHP에서는 프로그램 실행 중에 이름이 결정되는 함수를 호출 할 수 있습니다. MS 워드 문서를 읽고 작성할 수있는 PHPWord 라이브러리의 실용적인 예 :

$ elements = array ( "Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak"
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote"
"미주", "체크 박스", "텍스트 상자", "필드", "선");

$ functions = array ();

for ($ i = 0; $ i <count ($ 요소); $ i ++) {
$ functions [$ i] = "add". $ 요소 [$ i];
}

결과적으로, $ functions 배열은 $ elements 배열의 값, 즉 문서의 실제 요소로 작업을 수행하는 실제 함수의 이름을받습니다.

$ elements [4]에 대해 $ functions [4]를 호출하면 완벽한 검색과 빠른 결과를 얻을 수 있습니다.

항목 정렬하기

데이터를 정렬하는 작업이 중요합니다.PHP는 sort (), rsort (), asort (), ksort (), ... 등의 여러 함수를 제공합니다. 두 번째 두 함수는 키와 값 사이의 관계를 유지합니다. 때로는 배열의 값을 무작위로 섞는 것이 합리적입니다 - shuffle ().

배열의 PHP 값

정렬을 위해 PHP 함수를 사용하면 안됩니다.요소가 다른 유형뿐만 아니라 자연스러운 내용도 가질 수 있다는 것을 잊어 버리십시오. 우선, 러시아 문자를 포함하는 행을 정렬하고, 날짜를 정렬하고, 다른 형식으로 작성된 숫자를 정렬하는 데 매우주의해야합니다.

배열에 PHP 배열

최소한 스크립트의 테스트 단계에서 직접 솔루션을 작성하는 가장 좋은 방법은 수동 정렬입니다. 예기치 않은 상황을 예측하는 데 도움이됩니다.

소문자 배열

implode () 및 explode () 함수 덕분에쉽게 문자열로 변형되어 돌아올 수 있습니다. 이를 통해 데이터를 압축 된보기로 저장하고 필요에 따라 편리한 상태로 배포 할 수 있습니다.

문자열로 바뀐 배열은 새로운 가능성을 열어줍니다. 예를 들어, 텍스트에서 키워드를 찾는 작업은 found가 다시 추가되지 않아야합니다.

$ cSrcLine = "텍스트 텍스트 ListItemRun 텍스트 상자 ListItem 텍스트 상자 확인란 CheckBox 텍스트 상자 각주";

$ aSrc = 폭발 ( "", $ cSrcLine);
$ cDstLine = "";

for ($ i = 0; $ i <count ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
if (! is_integer (strpos ($ cDstLine, $ cFind)))) {
$ cDstLine. = $ cFind;
}
}
$ aDst = 폭발 ( "] [", $ cDstLine);

$ cOne = implode ( ";", $ aDst);

결과적으로 $ cOne 변수는 "Text, ListItemRun, TextBox, ListItem, Check, Box, CheckBox, Footnote"라는 소스 문자열의 값만 수신합니다.

키와 값의 러시아어

연결된 모든 것을 사용하지 않는 것이 좋습니다.통사 구조로, 국가 인코딩과 함께. 러시아어는 다른 모든 언어와 마찬가지로 a-z의 범위를 벗어나는 문자는 데이터 영역에 있지만 코드 구문에는 문제가되지 않습니다. 간혹 "배열을 프린터 나 화면에 출력"하는 간단한 PHP 작업조차도 "균열"로 이어지고 더 자주 스크립트를 중지합니다.

PHP는 충성스러운 언어이며핵심 가치가 있지만 적절한 시점에 올바른 값으로 키 값이 표시되어 인식 할 수 없기 때문에 작업량을 다시해야하는 경우가 많이 있습니다.

PHP 구문 및 언어 환경

PHP 구문은 한 가지 사항이지만이 구문의 구문은 하드웨어 옵션이있는 운영 체제와 함께 다른 응용 프로그램과 "거래"합니다. 많은 옵션이 있습니다. 모든 것을 예견 할 수는 없습니다.

규칙에는 "코드에는 코드 만 있고 입구에는"내부 및 출구에 정보가있을 때 "예기치 않은 놀라움을 피하는 데 도움이됩니다. 배열의 PHP 값은 "러시아어"일 수 있지만, 그 열쇠는 주어진 언어의 관점 에서뿐만 아니라 작업 환경의 관점에서도 구문 론적으로 정확해야합니다.

더 읽기 :