Introdução a matrizes

A melhor maneira de pensar de uma matriz é uma variável especial que mantém com outras variáveis. Uma matriz permite que você segure como muitos itens dentro dela, se necessário (a única limitação no tamanho da matriz é baseada na quantidade de memória é alocada PHP). Você pode percorrer todos os itens dentro de uma matriz (conhecido como atravessando), e PHP vem com mais de 70 funções, permitindo-lhe executar determinadas ações na sua matriz, tais como a busca dentro, contando o número de itens no seu interior, removendo itens duplicados e até mesmo invertendo a ordem. Não há quase nada a ele, ao criar uma matriz também:

$data = array();

Agora criamos uma matriz nova e vazia chamada $data. Matrizes são estruturados usando uma arquitetura de dados de índice e valor chave. Por padrão, quando você adicionar um item para uma matriz vazia, a posição do item na matriz é 0. Se você adicionar outro item, posição do item que torna-se 1 na matriz.

Despite the many books that have been written on the language, the PHP website is still the most up-to-date and comprehensive reference manual available

Apesar de muitos livros que foram escritos na língua, o site do PHP ainda é o manual de referência mais abrangente e actualizada disponível

Você também pode criar sua matriz com dados previamente preenchidos (se você já sabe o que vai ser na mesma). Para fazer isso, só criamos o array como antes, mas desta vez nós fornecemos os dados em uma lista separada por ponto-e-vírgula:

$data = array(‘Red’, 
Orange’, ‘Yellow’, ‘Green’,
 ‘Blue’);

É onde o sistema chave entra para o lugar. A maneira que o PHP interpreta essa matriz será como segue:

0 = ‘Red’, 1 = ‘Orange’, 2 = ‘Yellow’, 3 = ‘Green’ , 4 = ‘Blue’

Como você pode ver, cada chave está associado ao valor na matriz. A parte mais importante a lembrar é que matrizes começam sempre na tecla 1 0 e não chave como muitos podem assumir; é fácil no primeiro esquecer.

Instalando o PHP no Linux

A maioria das distribuições mais recentes do Linux vem com PHP. Embora você possa executar scripts PHP na linha de comando, estaremos usando o navegador da web (e, portanto, servidor web) para este tutorial.

Você pode seguir este tutorial por carregar seus arquivos PHP em um servidor de web na internet (se tiver). Para mim, porém, eu estou usando uma instalação padrão do Apache 2 na minha máquina Linux local. Acho que é mais fácil e mais rápido para escrever e testar o PHP na minha máquina local em vez de precisar fazer upload de arquivos via FTP cada vez.

Se você exigir instalação instruções de instalação e/ou guias para sua máquina local, recomendo a leitura através da instalação no manual de sistemas Unix, encontrado no site oficial do PHP, disponível no seguinte endereço: http://php.net/manual/en/install.unix.php .

Como alternativa, existem centenas de guias de instalação escritos para praticamente cada sabor de Linux. Basta pesquisa no Google para sua distribuição se o guia oficial do PHP não assinale todas as suas caixas.

Matrizes associativas

Matrizes também tem a flexibilidade de permitir-nos especificar nossas próprias chaves (conhecidos como matrizes associativas). Isso ajuda muito quando você quiser armazenar um valor contra uma chave específica em vez de ter que depender de índices automáticos.

Digamos que quiséssemos armazenar dados sobre uma pessoa em uma matriz; para fazer o que podemos fazer o seguinte:

$person = array(‘name’ => ‘Mike Mackay’, ‘location’ => 
Essex’, ‘age’ => 29);

Usando a instrução associada (= >), estamos dizendo PHP que queremos criar uma chave chamada nome e armazenar o valor de Mike Mackay contra ela. Você pode armazenar qualquer tipo de dados em uma matriz – até outras matrizes. A maneira que o PHP interpreta nossa matriz de pessoa é como esperamos:

‘name’ = ‘Mike Mackay’, ‘location’ = ‘Essex’, ‘age’ = 29

Quando você deseja usar um item de matriz, tudo o que você precisa fazer é chamar a matriz e a chave que você quer:

echo $data[0];

Este echos a palavra vermelho na tela. Para ecoar a palavra laranja, você poderia simplesmente alterar a chave de 0 para 1. Na nossa matriz de pessoa é tão simples – para eco, o nome para a tela, tudo o que preciso fazer é:

echo $person[‘name’];

Dica rápida

Use um editor de texto com destaque de sintaxe para PHP – ele vai ajudá-lo a identificar rapidamente o seu código e partes específicas ou funções, no seu interior. Há programas gratuitos disponíveis também, então dar uma olhada por aí e vá com o que você prefere o olhar de.

Adicionar dados a sua matriz

Se nós temos nossa matriz existente, mas quer adicionar mais dados a ele, como vamos realizar isso? Existem algumas maneiras em que podemos fazer isso e muitas vezes depende em grande parte se sua matriz tem índices de chave personalizados ou não; Mas para adicionar outro item para nossa matriz de $data, que podemos simplesmente fazer:

$data[] = ‘Indigo’;

Através do fornecimento de colchetes ao lado do nome de matriz, PHP reconhece esta acção como querendo empurrar um valor para a matriz. PHP tem uma função interna que faz o mesmo truque:

array_push ($data, ‘Indigo’);

Essa função leva um mínimo de dois argumentos. A primeira é a matriz que quer empurrar os dados para, em seguida, todos os itens depois são empurrados para o fim da matriz. Esta convenientemente permite empurrar vários itens na matriz ao mesmo tempo, por exemplo:

array_push($data, ‘Indigo’, ‘Violet’);

Se você precisa somente para empurrar um item, recomenda-se o primeiro método (usando os colchetes), como não tem nenhum as despesas gerais do sistema de chamar uma função. Se queríamos adicionar outro item para nossa matriz $person, precisamos apenas especificar a chave que desejamos usar, juntamente com o valor necessário:

$person[‘profession’] = ‘Developer’;

Matrizes em matrizes

Como eu mencionei antes, uma matriz pode conter qualquer tipo de item de dentro – isso inclui outras matrizes. A prática de vários arrays é bastante comum, e você vai encontrá-lo extremamente útil. Novamente, há algumas maneiras diferentes de conseguir isso, e o que você usa será baseado em sua estrutura de matriz.

Para este exemplo, digamos que temos uma matriz de McLaren F1 pilotos. Abra um editor de texto, digite o seguinte código PHP e salve-o como drivers.php na raiz do seu web:

<?php
$drivers[] = array(
  ‘name’ => ‘Jenson Button’,
  ‘nationality’ => ‘British’,
  ‘championships’ => 1,
);
$drivers[] = array(
  ‘name’ => ‘Lewis Hamilton’,
  ‘nationality’ => ‘British’,
  ‘championships’ => 1,
);
?>

Usamos os colchetes para instruir o PHP que desejamos para empurrar os dados do motorista até o fim da matriz. Cada item dentro do array () mestre deve ser separado por uma vírgula. Nossa matriz de $drivers agora contém dois itens – estes itens são matrizes de dados que contém informações de driver que desejamos exibir. Nos olhos do PHP, os dados para Jenson Button estão localizados no $drivers [0], enquanto os dados para Lewis Hamilton estão localizados em $drivers [1]. Poderíamos ter criado chaves feitas sob encomenda em vez de usar o 0 e 1, mas não é estritamente a pena para esse exemplo.

Nós simplesmente pode exibir os dados usando o eco e especificar a chave de índice de matriz (como $drivers[0]), mas como nós exibiria cada item quando não sabemos quanto tempo é a matriz? Felizmente para nós, há uma função de controle simples chamada foreach() que nos permite fazer isso.

Então você pode estar se perguntando por que nós não saberíamos o comprimento de uma matriz? Bem, sabemos que dados de driver estão contidos em cada item (nome, nacionalidade e campeonatos), mas uma consulta de banco de dados (ou função semelhante) pode retornar um driver, ou ele pode retornar cinco motoristas. Temos o número total de itens na matriz, usando uma função do PHP, mas usando foreach() é mais simples e permite-na escrever código mais curto. O controle de foreach() nos dá uma maneira fácil de iterar sobre uma matriz. Usando o drivers.php que nós criamos, copie o código logo abaixo do bloco PHP que contém a matriz de motoristas:

<?php
foreach($drivers as $driver) {
  echo ‘Name: ‘ . $driver[‘name’]. ‘<br />’;
  echo ‘Nationality: ‘ . $driver[‘nationality’]. ‘<br />’;
  echo ‘World Championships: ‘ . $driver[‘championships’].
 ‘<br /><br />’;
}
?>

Quando você exibir o arquivo no seu navegador, você verá uma lista básica de drivers em sua tela:

 Name: Jenson Button
 Nationality: British
 World Championships: 1
 Name: Lewis Hamilton
 Nationality: British
 World Championships: 1

Em cada ciclo de $drivers, o valor do item atual é atribuído a $driver (o primeiro loop sendo Jenson Button), e o ponteiro interno da matriz é movido por um; assim, no próximo loop você vai ter o próximo item da matriz (Lewis Hamilton). Isto continua ao longo de cada item da matriz até o final é conhecido.

A função foreach() requer dois parâmetros – o primeiro é a matriz que queremos percorrer. Em seguida, usamos uma palavra-chave do PHP como e, em seguida, entramos um nome de variável temporário que queremos atribuir o item de laço para (esta variável só está disponível dentro do loop). Em termos literais, estamos dizendo: loop através de cada item na matriz $drivers e armazenar cada item de motorista para uma matriz temporária chamada $driver.

Using a code editor that has built-in syntax checker (such as Eclipse, the winner of our IDE roundup in LXF152) can save a lot of time and frustration

Usando um editor de código que tem verificador de sintaxe embutido (tais como Eclipse, o vencedor do nosso ajuntamento IDE em LXF152) pode salvar um monte de tempo e frustração

Espero que, no exemplo você vai reconhecer algumas peças do último tutorial; nós estão ecoando uma sequência de caracteres concatenada por uma variável – esta sendo cada bit de informação sobre o controlador da matriz. Nós então concatenar outra sequência de caracteres que é HTML, permitindo-nos Formatar a saída de forma básica.

Sobre o último item da matriz, $driver [‘campeonatos’], nós eco fora duas quebras de linha; Isso só nos dá um pouco de separação entre cada condutor.

Dica rápida

Sempre que possível, fazer uso de recuo, como ele vai fazer as coisas fluem melhor e irá ajudá-lo a ler o código na página. Alguns editores de texto autotravessão para você, mas a maioria dos desenvolvedores usar uma única guia ou espaços de 2 – 4.

Vamos falar sobre funções

Existem dois tipos de funções em PHP:

  • Built-in funções PHP, tais como data () e array_push().
  • Funções definidas pelo usuário.

Nós vai concentrar o segundo tipo por agora (já falamos sobre algumas funções internas do PHP).

Uma função definida pelo usuário é um bloco especial de código PHP que escrevemos que pode executar operações personalizadas a qualquer tempo que é chamado. Algumas funções são escritas para manipular os dados e enviar esse novo valor de volta, enquanto outros executam operações unidirecionais, como gravar dados em um arquivo ou inserir os dados em um banco de dados. Para criar uma função, tudo o que precisamos fazer é escrever a função de palavra, seguida do nome que desejamos chamar nossa função (é importante observar essa função nomes só podem começar com letras ou caracteres de sublinhado), seguido de parêntese e, em seguida, um par de chaves:

function shout() {
}

Nós também podemos fornecer dados, conhecidos como argumentos, a nossa função a ser usado no seu interior. Quando chamar essa função e enviando informações para ele, a função atribui esses dados para a variável interna chamada $text, onde pode manipulá-lo, ou fazem como necessário. Esses dados são mantidos localmente para a função e não substituir quaisquer variáveis fora dela:

function shout($text) {
}
If we want the newly-modified data back, we can use return to send it back:
function shout($text) {
  return $text;
}

Para chamar uma função, tudo o que você precisa fazer é escrever o nome da função seguido por parênteses com ou sem quaisquer parâmetros (baseados em exigências da função):

shout();

Nós temos nossa função básica, mas tudo que faz é enviar de volta exatamente o que mandamos para ele – muito sentido eu sou certo que você concordará. Vamos fazer a nossa função fazer algo um pouco mais interessante. Criar um novo arquivo PHP, copie o código a seguir na ele e salve-o como Function:

<?php
echo shout(‘Hello World’);
function shout($text) {
  return strtoupper($text);
}
?>

Se você executar o que no seu navegador, você deve ver ‘ HELLO WORLD’ está sendo exibido. O que está acontecendo é que estamos enviando uma sequência de caracteres para a função, onde nós eco o valor retornado para fora.

A built-in PHP função strtoupper() tem um propósito simples – levar a entrada de sequência de caracteres e converter para maiusculas. Poderíamos modificar a função para executar o eco dentro em vez de usar o retorno, mas nosso método original nos dá maior flexibilidade para o uso de múltiplos propósito (não sempre queiramos um valor fora de eco imediatamente).

Podemos escrever qualquer tipo de código dentro de nossa função, e não estamos limitados a fazer transformações de sequência de caracteres.

If() and else()

Você vai notar uma coisa com o nosso código… vai realizar uma verificação condicional usando if() e else(). If/else fornece uma maneira simples de avaliar qual código a ser executado, com base no resultado de uma seleção especial, ou condição. If() só é executado quando a condição dentro do parêntese equivale (ou retorna) TRUE, caso contrário chama-se else() – apenas o código entre as chaves será executado, mas apenas um deles nunca será executado:

if(condition is true) {
  // Run the code in this block
}
else {
  // Run the code in this block instead
}

Em termos literais, tudo o que vou dizer é: se encontra-se hoje como um índice na matriz, em seguida, eco, os dados da corrida, caso contrário o sem corridas mensagem eco em vez disso.

Vamos agora criar um calendário de eventos básicos usando nossas matrizes e conhecimento da função.

Colocar tudo junto

Não queremos nada lá em cima, então por enquanto vamos criar um calendário de corrida de F1 2012. Vamos enviar a data de hoje para uma função e retornar uma corrida atual, se um está acontecendo naquele dia, caso contrário nós vai ecoar uma mensagem genérica.

Começar criando um novo arquivo PHP chamado calendar.php e, em seguida, criar uma função que inicialmente contém uma matriz de datas a corrida:

<?php
function is_race_day() {
  $race_dates = array(
    ‘18/3/2012’ => array(‘title’
 => ‘Australian Grand Prix’,
 ‘location’ => ‘Melbourne’),
    ‘25/3/2012’ => array(‘title’
 => ‘Malaysia Grand Prix’, 
‘location’ => ‘Kuala 
Lumpur’),
    15/4/2012’ => array(‘title’ => ‘Chinese Grand Prix’, 
‘location’ => ‘Shanghai’),
    ‘22/4/2012’ => array(‘title’ => ‘Bahrain Grand Prix’, 
location’ => ‘Sakhir’),
    ‘13/5/2012’ => array(‘title’ => ‘Spanish Grand Prix’, 
‘location’ => ‘Catalunya’),
  );
}
?>

Inclui apenas as cinco primeiras datas da época para agora, mas sinta-se livre para adicionar mais. Em seguida, vamos atualizar a função. Obter a data de hoje (Veja o primeiro tutorial sobre a função data ()) e verifique se ele tem um Grand Prix ou não; para isso usaremos uma função interna, array_key_exists().

Escreva o seguinte logo abaixo do final da matriz e antes das funções fechar a chave de abertura:

$date = date(‘m/d/Y’);
if(array_key_exists($date, $race_dates)) {
  echo “Today’s race is the “ . $race_dates[$date][‘title’] . “ in “
 . $race_dates[$date][‘location’] . “.”;
}
else {
  echo “There is no race today.”;
}

Usamos o valor de $date dentro da função array_key_exists() – esta função aceita dois parâmetros: o primeiro é a chave que procura (no nosso caso é a data) e a segunda é a matriz que você deseja verificar contra (nossa matriz $race_dates). A função array_key_exists() retorna um valor booleano TRUE se a chave existe, ou FALSE se não.

Se a corrida for encontrada, vamos ao echo os detalhes da corrida. Podemos recuperar esses dados porque sabemos que a chave existe, portanto, usamos a variável $date como um atalho para recuperar as informações. Essencialmente, é o mesmo que escrever:

 echo $race_dates[‘13/5/2012’]
 ‘title’];

Tudo o que nos resta a fazer é chamar o script. Podemos fazer isso no exatamente da mesma maneira que nosso script de função anterior e colocar o nome da função (com parênteses) na parte superior do nosso script:

is_race_day();

Nós pode então executar este script em nossos navegadores, indo para calendar.php, ou podemos usar includes() para incorporá-lo em um site existente. Que exista uma corrida no dia que o script é executado, nós serão apresentados com os detalhes. Para testar isso, simplesmente codificar um encontro na variável $date:

$date = ‘13/5/2012’;

E com isso, estamos feitos!

É bastante para tomar se você é novo para matrizes e funções, mas com sorte você verá que o que nós aprendemos é extremamente importante e intrínseca à programação.

Tente modificar o calendário; Você poderia ser mais específico com as datas e tem uma coisa em cada dia de um mês, se você deseja. Como um exercício, olhe para a função data () e alterar o calendário para ecoar as mensagens com base na hora do dia. Lembre-se, você não vai precisar de uma entrada para cada dia – apenas a cada hora.

Anúncios