terça-feira, 20 de setembro de 2011

Introdução aos Arrays PHP


Muitas coisas que fazem o mundo como nós o conhecemos possíveis são tão comuns que nos esquecemos de que eles sequer existem. Um dos meus exemplos favoritos é o elevador, a idéia de uma plataforma de elevação ou caixa é muito velha, mas tinha que esperar pela Revolução Industrial para tornar-se um dispositivo prático. Quando o Sr. Otis instalou seu primeiro elevador de sucesso no novíssimo edifício Haughwout EV em 1857, ele abriu o caminho para o crescimento vertical das metrópoles como Nova York e São Paulo.


Outra invenção das minhas favoritas são tabelas. Não do tipo de jantar, embora eles também são imensamente importantes, tanto para comer e trabalhar, em vez do tipo que armazena informações. Tais tabelas são parte de nossa vida diária de centenas de variações diferentes. Em muitos países, os recipientes leite, manteiga e cereais exibir uma tabela de valores nutricionais - apesar de eu saber quem lê e entende-los.

 A maioria dos trabalhos, para aqueles que ainda lêem na imprensa, são organizados como uma espécie de tabela. Muitas cidades, especialmente no Novo Mundo (aqui estendido para incluir Austrália e Nova Zelândia), são organizados como uma tabela com ruas e avenidas como linhas como colunas.

 As crianças começam com tabelas assim que eles começam a aprender multiplicação e divisão, na verdade, Português tem uma palavra interessante para tabuada: Taboada , grosso modo, "uma coisa colocada em uma mesa!" Engenharia é impensável sem tabelas, e tabelas são os backbones de técnicas de gestão como Pesquisa Operacional e Teoria dos Jogos .

Mas que sobre o assunto deste artigo, matrizes ?
O que são matrizes?

Tabelas organizar os dados de tal forma que podemos facilmente encontrar correlações ou realizar cálculos simples. Uma matriz é essencialmente uma maneira de organizar os dados de uma forma de mesa-like. O nome do "array" vem da mesma raiz latina que a palavra "arranjo".

Para nos ajudar a entender melhor arrays, vamos começar com uma tabela chamada Preços NYC para mostrar o preço de um hambúrguer em Nova York é um dólar:

Podemos escrevê-lo como um array chamado, você jamais imaginaria, pricesNYC :
pricesNYC ("hamburger" = 1)
Que parte da informação é tão simples que representá-la em uma mesa ou uma matriz parece um desperdício de tempo. Mas o que se somarmos o preço de um lado de batatas fritas? Poderíamos escrever:

e:

pricesNYC ("hamburger" = 1, "batatas fritas" =. 70)
Este é um array associativo . Em uma matriz associativa, valor cada é identificado por um rótulo, ou seqüência de etiquetas, chamado de chave . hambúrguer e batatas fritas são as chaves neste exemplo, e seus valores são 1 e 0,70, respectivamente. Teclas também podem ser uma seqüência numérica em vez de rótulos. Em tais casos, a matriz é dito ser não-associativa . Nosso exemplo como um array não associativa seria:
pricesNYC (0 = 1, 1 =. 70)

O valor no índice (ou chave) 0 é 1 eo valor no índice 1 é 0,70. (Na maioria das linguagens de programação, não associativo arrays começam com um índice de 0 em grande parte por razões históricas e matematicamente conveniente.)
Às vezes, os índices não são explicitamente dado, mas os valores ainda são acessíveis pela sua posição.
pricesNYC (1, 0,70)

Furando com a matriz associativa, poderíamos criar uma segunda tabela e matriz, se queremos mostrar os mesmos preços para Los Angeles:

pricesLA ("hamburger" = 1,30, "batatas fritas" =. 50)
Alternativamente, poderíamos combinar os dados das duas tabelas em conjunto como este:

preços ("New York" = pricesNYC ("hamburger" = 1, "batatas fritas" =. 70),
        "Los Angeles" = pricesLA ("hamburger" = 1,30, "batatas fritas" =. 50))

Nós começamos a criar arrays dentro de arrays e cada valor é agora identificado pela seqüência de rótulos. Por exemplo, a chave para o preço de um hambúrguer em Nova York agora é New York , hamburger . Em preços , a matriz de nível superior tem duas chaves, New York e Los Angeles . Cada uma dessas chaves apontam para valores que são realmente outras matrizes. Essas matrizes de segundo nível têm os rótulos hambúrguer e batatas fritas que, finalmente, apontar para um número que é o preço desejado.
De forma não-associativo, a matriz seria algo parecido com isto:
preços (0 = pricesNYC (0 = 1, 1 =. 70),
        1 = pricesLA (0 = 1,30, 1 =. 50))
O preço de um hambúrguer em Nova York é encontrada aqui com o índice 0 0.

Criando Arrays

Agora que o conceito de matrizes é estabelecida, vamos passar a discutir como o PHP implementa-los e, mais importante, como podemos criá-los. O método mais ortodoxo de criação de uma matriz é usar o array () construir:

<? Php
$ PricesNYC = matriz ();

Nossa matriz como criado está vazio. Podemos então atribuir valores para a matriz usando a chave especificada entre parênteses:

<? Php
$ PricesNYC [ "hamburger" ] = 1;
$ PricesNYC [ "frito" ] = 0,70;

Alternativamente, poderíamos ter preenchido a matriz, ao mesmo tempo que criá-lo usando a sintaxe chave => valor . Os pares chave / valor são separados por vírgula:

<? Php
$ PricesNYC = matriz ( "hamburger" => 1, "batatas fritas" => 0,70);

Quando eu estava começando a aprender PHP, muitas vezes eu tinha que voltar a documentação para verificar se o operador foi correta => ou -> . Um dia, eu vim com o mnemônico "esta chave será igual a esse valor ", e agora eu lembrar facilmente => é a opção correta.
Então, o que os exemplos acima parecem para não-associativa arrays?

<? Php
$ PricesNYC = matriz ();
$ PricesNYC [0] = 1;
$ PricesNYC [1] = 0,70;

e:

<? Php
$ PricesNYC = matriz (0 => 1, 1 => 0,70);

Se tudo que você quer é uma matriz não-associativa, não é necessário especificar o índice. PHP usa automaticamente o próximo valor inteiro na seqüência de teclas, começando em 0, para a chave, se você não fornecer um. Estes exemplos produzir idênticos não-associativa matrizes para aqueles que acabamos de ver:

<? Php
$ PricesNYC = matriz ();
$ PricesNYC [0] = 1;
$ PricesNYC [1] = 0,70;

e:

<? Php
$ PricesNYC = matriz (0 => 1, 1 => 0,70);

Arrays PHP pode ter chaves mistas, isto é, algumas teclas podem ser strings e outros podem ser índices. Até agora vimos as chaves que foram ou strings (como hambúrguer ) e inteiros (0).
Agora vamos tornar as coisas um pouco mais interessante, transformando a tabela de duas cidades em um array. A criação do array vazio é, como antes, simples:

<? Php
$ Preços = matriz ();

Também é simples como a matriz pode ser preenchida com a sintaxe entre parênteses:

<? Php
$ Preços [ "New York" ] [ "hamburger" ] = 1;
$ Preços [ "New York" ] [ "fritadas" ] = 0,70;
$ Preços [ "Los Angeles" ] [ "hamburger" ] = 1,30;
$ Preços [ "Los Angeles" ] [ "fritadas" ] = 0,50;

ou, para não-associativa matrizes:

<? Php
$ Preços [1] [0] = 1;
$ Preços [1] [1] = 0,7;
$ Preços [0] [0] = 1.3;
$ Preços [0] [1] = 0,5;

O que sobre a atribuição de todos os valores quando criamos a matriz
Desde a nossa tabela tem dois níveis, sendo o primeiro da cidade eo segundo item, que declarar a matriz como uma série de arrays dentro de outro:

<? Php
$ Preços = matriz ( "Los Angeles" => conjunto ( "hamburger" => 1.3, "batatas fritas" => 0,5),
                "New York" => conjunto ( "hamburger" => 1, "batatas fritas" => 0,7));

Você vai descobrir que muitas vezes representam as chaves com as variáveis ​​quando se trabalha com matrizes. Isto é muito útil para criar matrizes cujos valores podem ser mecanicamente calculado. Por exemplo, este laço cria um array de 10 elementos com valores que são o quadrado das chaves:

<? Php
$ Quadrados = matriz ();
para ( $ key = 0; $ key <10; $ chave + +) {
    $ Quadrados [ $ key ] = $ key * $ chave ;
}

A matriz resultante $ quadrados é preenchido o mesmo como se tivéssemos escrito:

<? Php
$ Quadrados = matriz ();
$ Quadrados [0] = 0;
$ Quadrados [1] = 1;
$ Quadrados [2] = 4;
$ Quadrados [3] = 9;
...
$ Quadrados [9] = 81;

Usando Arrays
Aprendemos como criar e preencher arrays com os valores, assim como sobre como recuperar esses valores? Para utilizar um valor em uma matriz você só tem que se referem a ele com o nome da variável de matriz eo índice desejado. Desta forma, o preço de um hambúrguer em Nova York é a seguinte:

<? Php
$ Preço = $ pricesNYC [ "hamburger" ];

ou:

<? Php
$ Preço = $ preços [ "New York" ] [ "hamburger" ];

Se queremos que o custo de um lanche (hambúrguer + batata frita), em Los Angeles, podemos calculá-la como:

<? Php
$ Preço = $ preços [ "Los Angeles" ] [ "hamburger" ] + $ _Preços [ "Los Angeles" ] [ "fritadas" ];

Suponha que queremos uma lista de o custo do lanche é todas as cidades. Como bons programadores não teríamos sonho de repetir a instrução para todas as cidades. Em vez disso, nós tentar escrever um loop em vez. É uma boa idéia, mas que constroem looping devemos usar? Vamos tentar um para loop-:

<? Php
para ( $ key = _start_; $ key <= _end_; $ chave + +) {
    $ Preço = $ preços [ $ key ] [ "hamburger" ] + $ preços [ $ key ] [ "fritadas" ];
}

Hrm ... que não funciona porque as chaves do array são strings! Nós não sabemos o que usar para _start_ ou _end_ . Felizmente, PHP tem um foreach loop-que percorre todos os elementos de um array, que é exatamente o que queremos fazer:

<? Php
foreach ( $ preços como $ snack ) {
    $ Preço = $ snack [ "hamburger" ] + $ snack [ "fritadas" ];
}

Este loop será executado através de matriz $ preços duas vezes, pois tem dois primeiros elementos de nível. Na primeira corrida, ele vai extrair o array que tem os preços de hambúrgueres e batatas fritas em Nova York . Chamamos esta matriz $ snack . Os preços são então adicionados, observando-se os valores usando o hambúrguer e batatas fritas chaves. É claro que em um script real algo mais deve acontecer com preço de $ , como ser impressos ou enviados para uma tabela de dados, mas não precisamos fazer isso aqui. A matriz de primeiro nível é então automaticamente incrementado para o próximo elemento eo loop torna a matriz de segundo nível, com preços para Los Angeles disponível como $ lanche.
É possível aninhar foreach -loops. Apenas por uma questão de um último exemplo, vamos calcular os preços usando dois loops. Se isso é confuso, copiá-lo para baixo com caneta e papel (um dispositivo estudo séculos de idade que faz maravilhas para a iluminação) e leia cuidadosamente por ele.

<? Php
foreach ( $ preços como $ cidade => $ snack ) {
    echo   "<b>" . $ cidade . "</ b> <br/>" ;
    $ TotalItemPrice = 0;
    foreach ( $ snack como $ item => preço de US $ ) {
        echo $ item . "=" . $ preço . "<br/>" ;
}

foreach pode usar o => sintaxe para fazer a tanto a chave da corrente e do valor disponível para o corpo do loop. A saída deste circuito irá enviar os preços dos hambúrgueres e batatas fritas agrupados por cidade para o navegador.
Conclusão
Matrizes são muito, muito importante e versátil estrutura de dados. Eles são úteis para o agrupamento de todos os tipos de informações relacionadas juntos, e são realmente fácil de usar uma vez que você pegar o jeito deles. Mas você pode fazer muito mais com eles do que apenas adicionando preços. Gosto de usá-los para scripts de personalização, criando pares chave / valor para os dados como nome do site de domínio, descrição, palavras-chave, credenciais de login do banco de dados, etc Além disso, observe as variáveis ​​PHP super-globais, como $ _GET , $ _POST , $ _SESSION e $ _SERVER são todas as matrizes. Agora que você está no seu caminho para se tornar um usuário proficiente variedade, você verá todos ao seu redor!
Gee, todas essas tabelas e matrizes me fez fome. Acho que vou pegar o elevador para baixo e ter um hambúrguer com batatas fritas. Ou melhor, eu peixe fantasia e chips?

Nenhum comentário :

Postar um comentário

Total de visualizações de página