배열로 제시된 정보는값의 유형과 크기가 다르며 요소 수를 항상 미리 결정할 수는 없습니다. 특히 분산 버전의 최신 프로그래밍을 사용하면 복잡한 데이터 구조를 만들 수 있습니다. 내용과 속성은 다양한 동작이나 이벤트의 결과로 다른 시점에 무기한으로 동적으로 결정될 수 있습니다.
개발 단계에서 항상 운영 프로세스를 예측하고 정보의 표시 및 사용, 정보의 외관 및 사용에 대한 모든 가능한 옵션을 제공하는 것이 가능한 것은 아닙니다.
PHP는 각각의 구문을 공식화하여항목에 대한 액세스 옵션. 둘 다 키 유형 또는 값 유형과 무관하며 일반 루프에서 에뮬레이션 할 수 있습니다. 배열을 요소 집합으로 간주하는 것이 좋습니다. 그 수는 초기에 결정되지 않았습니다. 키를 사용하거나 사용하지 않고 즉시 배열을 구성 할 수 있습니다. 배열에서 요소를 삭제할 수 있으며 키는 기본적으로 연관되어 형성 될 수 있습니다.
foreach ($ aArrayName as $ xValue) {루프 바디}
이 디자인은 foreach PHP 루프를 의무화합니다모든 요소를 한 줄로 걷습니다. 루프 본문에서 변수 $ xValue는 $ aArrayName 배열의 모든 값을 추가 된 순서대로 순차적으로 가져옵니다. 요소 키 값을 사용할 수 없습니다.
foreach ($ aArrayName as $ xKey => $ xValue) {루프 바디}
또한 foreach 구문, PHP 실행배열의 전체 내용을 살펴 보지만 루프 본문에서 $ xValue 변수와 $ xKey 변수는 요소의 키가됩니다.
foreach 내부에서 PHP는요소가 추가 된 순서대로, 그러나 배열을 형성하는 동안 반복적으로 추가 / 삭제가 있었고 키와 무언가가없는 것으로 추가 된 경우 요소 시퀀스의 위치가 아닌 배열을 사용하는 것이 가장 좋습니다. 내용 또는 키.
다양한 객관적인 이유로배열 내부의 순서는 존중되지 않거나 중요하지 않을 수 있지만 어떤 경우에도 방향을 지정해서는 안됩니다. 간단한 작업에서는 사소한 데이터 세트에 문제가 없으며 순차적 처리를 위해 알고리즘을 구성 할 수 있지만 많은 요소가 배열 작성 / 편집 프로세스에 영향을주는 경우 컨텐츠에 집중해야합니다.
무조건 유사한 언어를 고려하지 않고 확립 된 자체 개념의 관점에서, PHP foreach 배열은 실제 구체적인 작업을 고려하여 독립적으로 설계되어야합니다.
실습, 주어진 것이있을 때, 이것은 특정 기준에 의해 유사한 것들의 일반적인 수집에 색인이 있습니다. 어제 였어.
Индекс стал ключом, а массив принял облик 연관 배열. 즉, 키는 순차 고유성을 잃고 (보통 순차 : 0, 1, 2, ... n) 값이되었지만 실제 값 (요소의 내용)과 연관된 단순 값 (즉, 키)이되었습니다. 오늘은 정확하지만 완벽하지는 않습니다..
그렇기 때문에 PHP는 foreach 루프를 일반 배열을 지향하는 일반 루프의 대안으로 간주합니다. 이게 우선이고,이게 매우 중요한 것입니다. 배열 요소의 실제 정확성뿐만 아니라 그들의 열쇠!
처음에는 요소가 있었고 두 개의 요소가있었습니다. 다음은 요소의 배열이 나타나는 방식과 그 배열을 통한 루프입니다.
for ($ i = 0; $ i <count ($ aArrayName); $ i ++) {
각 $ aArrayName [$ i]의 처리 본문
}
그런 다음 얼굴이없는 0, 1, 2, ... n 대신 요소가 고유 한 이름을 얻었습니다. 키와 배열이 연관성이 된 다음 foreach 루프가 필요했습니다- "각각을 통해 루프":
foreach ($ aArrayName as $ xKey => $ xValue) {
동일한 각 $ aArrayName [$ xKey] 또는 $ xValue의 처리 본문
}
이제 올바른 요소가 배열에 올 때가 왔습니다.즉, 그 자체로 존재하는 것입니다. 그들은 자신의 인덱스, 콘텐츠, 시퀀스에서의 위치를 알고 있습니다. 자신의 시퀀스 선택을 명시하고 이러한 모든 기능을 포함하는 실제 배열에 위임하는 경향이 있습니다.
이러한 올바른 배열이 처리됩니다.스스로. 각각에 대해 일반 루프와 루프를 사용할 특별한 필요가 없습니다. 공식적으로 구문과 의미론은 이미 이것을 허용하고 있으며, 질문은 개발자 의식의 관성 뒤에있을뿐입니다.