Em Busca da “Zend PHP Yellow Pages”
arrays
Operações com arrays
Aug 14th
Uma série de operadores se comportam de diferentes formas quando seus operandos são arrays. Por exemplo, o operador de adição “+” pode ser usado para criar a união de dois operandos:
$a = array (1, 2, 3);
$b = array (’a’ => 1, ’b’ => 2, ’c’ => 3);
var_dump ($a + $b);
Isso irá imprimir o seguinte:
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
Note como o array resultante inclui todos os elementos dos dois arrays originais, mesmo que tenham os mesmos valores, isto ocorre pelo fato das chaves dos dois arrays serem diferentes, se os dois arrays tiverem elementos comuns que partilham a mesma sequência chaves ou que têm as teclas numéricas (mesmo que sejam diferentes), eles só apareceram uma vez no resultado final:
$a = array (1, 2, 3);
$b = array (’a’ => 1, 2, 3);
var_dump ($a + $b);
O resultado será:
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
int(1)
}
Revelando Arrays
Aug 13th
Algumas vezes é mais simples de trabalhar com os valores de um array, atribuindo-lhes variáveis individuais. Enquanto isto pode ser feito extraindo elementos individuais e a atribuição de cada um deles para uma variável diferente, PHP fornece um atalho rápido, o construtor list():
$sql = “SELECT user_first, user_last, lst_log FROM users”;
$result = mysql_query($sql);
while (list($first, $last, $last_login) = mysql_fetch_row($result)) {
echo “$last, $first – Last Login: $last_login”;
}
Por usar o construtor list(), passando-se três variáveis, que estão ocupando os primeiros três elementos do array que foi atribuído a essas variáveis em ordem, permitindo-nos em seguida, utilizar esses elementos dentro do nosso loop while.
Arrays multi-dimensionais
Aug 12th
Como cada elemento de um array pode conter qualquer tipo de dado, a criação de array multi-dimensional é muito simples. Para criar, simplesmente atribui-se um array, como o valor, para um elemento de outro array. Com PHP, podemos fazer isso para um ou mais elementos dentro de qualquer array permitindo assim vários níveis de assentamento.
$array = array();
$array[] = array(
’a’,
’b’
);
$array[] = array(
’c’,
’d’
);
echo $array[0][1] . $array[1][0];
Nossa saída deste exemplo é “bc”. Como você pode ver, o acesso multi-dimensional a elementos do array se dar de uma forma simples, para isso, basta passar a chave para a especificar elemento que deseja acessar em cada nível.
Arrays enumerativos e associativos
Aug 11th
Arrays podem ser divididos em duas categorias: enumerativa e associativos.
Enumerativa: As matrizes são indexadas usando apenas os índices numéricos.
Associativos: Permitem a associação de uma chave arbitrária para cada elemento.
No PHP esta distinção pode ficar um pouco confusa, porque, você pode criar uma matriz enumerativa e depois adicionar elementos associativos para ele (mantendo em uma enumeração). Além do mais, as matrizes se comportam mais como mapas e podem usualmente ser usadas para simular um número de estruturas diferentes, incluindo filas e pilhas.
O PHP fornece uma grande quantidade de flexibilidade na forma como chaves numéricas podem ser atribuídas a matrizes: eles podem ser qualquer número inteiro (negativo e positivo), e não necessariamente ser sequencial, de modo que uma grande lacuna pode existir entre os índices de dois valores consecutivos sem a necessidade de criar valores intermédios para cobrir sempre que possível as chaves entre os dois. Além disso, as chaves de um array não determinam a ordem dos seus elementos, como vimos anteriormente, quando criamos uma array com as chaves enumerativa que foram fora da ordem natural.
Quando um elemento é adicionado a um array sem especificar uma chave, o PHP automaticamente atribui um numérico que é igual a maior chave numérica já existente na matriz, mais um:
$a = array (2 => 5);
$a[] = ‘a’; // Esse irá ter a chave com o valor 3
Observe que isso é verdadeiro mesmo se o array contém uma combinação de chaves em sequência numérica:
$a = array (’4’ => 5, ’a’ => ’b’);
$a[] = 44; // Esse irá ter a chave com o valor 5
OBSERVAÇÃO: Note que as chaves da matriz são case-sensitive, mas de tipo insensível. Assim, a chave ‘A’ é diferente da chave ‘a’, mas as chaves “1″ e 1 são os mesmos. No entanto, a conversão só se aplica se uma chave string contém a representação tradicional decimal de um número, assim, por exemplo, a chave ’01′não é a mesma que a chave 1.
Imprimindo Arrays
Jul 17th
Quando estudamos o básico do PHP, mostramos como o comando echo() pode ser usado para a saída de valores de uma expressão, incluindo a de uma única variável. Embora o echo() seja extremamente útil, ele apresenta algumas limitações que restringem sua utilidade em determinadas situações. Por exemplo, quando debugamos um script, muitas vezes precisamos ver não apenas o valor de uma expressão, mas também seu tipo. Outro problema com o echo() está no fato de que é incapaz de lidar com tipos de dados compostos, como matrizes e objetos.
Para evitar esse problema, o PHP fornece duas funções que podem ser usadas para imprimir o valor de uma variável recursivamente: print_r() e var_dump(). Eles diferem entre si em alguns poucos pontos:
- Embora ambas as funções imprimem recursivamente o conteúdo de valor composto, apenas var_dump() envia os tipos de dados de cada valor.
- Apenas var_dump() é capaz de reproduzir o valor de mais de uma variável ao mesmo tempo
- print_r() Só pode retornar a sua saída como uma string, em vez de escrevê-lo no padrão de saída do script.
Seja o echo(), var_dump() ou print_r(). Pode ser utilizado em qualquer dado o cenário, claramente, depende do que você esteja tentando alcançar. De um modo geral, o ECHO() abrange a maioria das suas bases, enquanto var_dump() e print_r() oferecem uma forma mais especializada de funcionalidades que funciona bem como um auxílio na depuração.
Básico sobre arrays
Jul 7th
Todos os Arrays são coleções ordenadas de itens com elementos chamados. Cada elemento tem um valor de identificador, e esse identificados é exclusivo para o array a que pertence. Como nos mencionamos no post anterior, as chaves ou identificadores podem ter números inteiros ou uma seqüência de tamanho indefinido.
Arrays podem ser criados de duas formas. A primeira seria chamando explicitamente o contrutor array(), que pode ser passada uma série de valores e, opcionalmente, as teclas:
$a = array (10, 20, 30);
$a = array (’a’ => 10, ’b’ => 20, ’cee’ => 30);
$a = array (5 => 1, 3 => 2, 1 => 3,);
$a = array();
A primeira linha do código acima, cria um array especificando apenas os valores dos seus três elementos. Como cada elemento de uma matriz também deve ter uma chave, PHP atribui automaticamente uma chave numérica para cada elemento, começando do zero.
No segundo exemplo, as chaves de matriz são especificados na chamada do construtor de array(), neste caso, três teclas alfabéticas (Note que o tamanho das teclas é arbitrária).
No terceiro exemplo, as chaves são atribuídas “Fora de ordem”, então o primeiro elemento do array tem, de fato, a chave com o valor 5. Aqui Você pode notar o uso de uma vírgula após o último elemento, que é perfeitamente legal de uma perspectiva sintática e não tem efeito sobre a matriz final.
Finalmente, no quarto exemplo, podemos criar uma matriz vazia.
Um segundo método de acesso a arrays é através do operador de array ([]):
$x[] = 10;
$x[’aa’] = 11;
echo $x[0]; // Será impresso 10
Como você pode ver, este operador oferece um grau muito maior de controle do array():
no primeiro exemplo, vamos adicionar um novo valor para a matriz armazenada na variável $x. Como não especificamos a chave, o PHP irá automaticamente escolher a chave numérica mais próxima disponível para os nós.
No segundo exemplo, por outro lado, especificamos a chave ‘aa’ no mesmo array. Note que, em ambos os casos, nós não inicializamos explicitamente $x como um array, o que significa que o PHP automaticamente irá convertê-lo para um nó de array, e se $x for vazio, ele simplesmente será inicializado com um array vazio.
Arrays
Jul 5th
Olá pessoal, mais um grande tempo sem postar aqui no blog, sempre com esperança de que um dia eu consiga postar semanalmente. hehehe…
Bom falaremos nos próximos dias sobre arrays, eles são os Reis incontestáveis das estruturas de dados avançados em PHP. matrizes são PHP extremamente flexíveis, que permitem numérico, teclas auto-incrementadas, teclas alfa numéricas ou uma mistura de ambos, e são capazes de armazenar praticamente qualquer valor, incluindo outras matrizes. Com mais de setenta funções para manipulá-las, matrizes podem fazer praticamente qualquer coisa que você possa imaginar.