As informações apresentadas em arrays podem serdiferem no tipo de valores e seu tamanho, e o número de elementos nem sempre pode ser determinado antecipadamente. A programação moderna, especialmente na versão distribuída, permite a criação de estruturas de dados complexas cujo conteúdo e propriedades podem ser determinados dinamicamente em um ponto indefinido no tempo como resultado de várias ações ou eventos em uma seqüência diferente.
Nem sempre no estágio de desenvolvimento, você pode prever o processo de operação, fornecer todas as opções possíveis para a apresentação e uso da informação, a dinâmica de sua aparência e uso.
Formulando a sintaxe do foreach, o PHP propôs doisopção para acessar itens. Ambos não dependem do tipo de chave ou do tipo de valor e podem ser emulados pelo loop normal. Sugere-se considerar a matriz como uma coleção de elementos, cujo número não está inicialmente definido. Uma matriz pode ser formada na mosca, com ou sem chaves. Em uma matriz, um elemento pode ser excluído, as chaves podem ser associativas e formadas por padrão.
foreach ($ aArrayName como $ xValue) {corpo do loop}
Tal construção requer um loop foreachPercorrer todos os elementos seguidos. No corpo do loop, a variável $ xValue tomará sequencialmente todos os valores da matriz $ aArrayName na ordem em que foram adicionados. Os valores das chaves do elemento não estarão disponíveis.
foreach ($ aArrayName como $ xKey => $ xValue) {corpo do loop}
Aqui também, executando a construção foreach, PHPirá verificar todo o conteúdo da matriz, mas no corpo do loop, os valores correspondentes serão tomados como a variável $ xValue e a variável $ xKey - a chave do elemento.
Por dentro do PHP foreach vai oferecer conteúdo ema ordem em que os elementos adicionados, mas se a formação da matriz foram repetidas adição / remoção, e acrescenta algo às teclas, e algo sem, é melhor para fazer o trabalho de uma matriz não é do ponto de vista de uma sequência de elementos, e com base em seu conteúdo ou nas teclas.
Devido a várias razões objetivasa seqüência dentro da matriz pode não ser respeitada e / ou pode não ser de particular importância, mas não deve ser orientada de forma alguma. Em problemas simples, em conjuntos de dados triviais, não há problemas, e o algoritmo pode ser configurado para processamento seqüencial, mas quando o processo de criação / edição de um array é influenciado por muitos fatores, deve-se focar no conteúdo.
Do ponto de vista do próprio conceito existente, sem levar em conta até mesmo linguagens que são incondicionalmente semelhantes, o array foreach do PHP deve ser projetado independentemente levando em conta a tarefa concreta real.
Pratique quando há um dado, e este tem um índice na coleção geral dele semelhante de acordo com um determinado critério - foi ontem.
O índice tornou-se a chave e a matriz tomou formamatriz associativa. Ou seja, a chave perdeu sua exclusividade sequencial (geralmente era consistente: 0, 1, 2, ... n) e tornou-se um valor também, mas um valor simples (isto é, uma chave) associado ao valor real (ou seja, o conteúdo do elemento). É hoje, está certo, mas não perfeito.
É por isso que o loop foreach é considerado pelo PHP como uma alternativa para um loop regular que é orientado para arrays regulares. Isto é principalmente, e isso é muito importante, porque implica correção real dos elementos do array, bem como suas chaves!
Primeiro, havia um elemento, depois dois elementos ... então havia uma matriz de elementos e um loop ao longo de uma matriz daqueles:
para ($ i = 0; $ i <count ($ aArrayName); $ i ++) {
o corpo de processamento de cada $ aArrayName [$ i]
}
Então o elemento em vez do sem rosto 0, 1, 2, ... n tinha seu próprio nome - a chave e então os arrays se tornaram associativos, e então um laço foreach era necessário - um "loop para cada":
foreach ($ aArrayName como $ xKey => $ xValue) {
o corpo de processamento de cada $ aArrayName [$ xKey] ou $ xValue que é o mesmo
}
Agora é hora de chegar ao array com os elementos certos, isto é, aqueles que estão por conta própria. Eles mesmos sabem que seu índice, seu conteúdo, seu lugar em seqüência, estão inclinados a exercitar sua própria escolha de sequência e delegar todas essas possibilidades à matriz real que os contém.
Tais matrizes corretas serão processadaspor si mesmos. Uma necessidade especial de usar ciclos e ciclos comuns para cada um simplesmente não será. Formalmente, a sintaxe e a semântica já permitem, a questão é apenas a inércia da consciência do desenvolvedor.
</ p>