Funções para tratamento de Arrays

segunda-feira, 10 de novembro de 2008 | Marcadores: , , | 0 comentários |

Funções Genéricas

Array
array array(...);

É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. Vejamos alguns exemplos:

Exemplo 1
$teste = array("um", "dois","tr"=>"tres",5=>"quatro","cinco");

Temos o seguinte mapeamento:
0 => "um" (0 é o primeiro índice, se não houver um explicito)
1 => "dois" (o inteiro seguinte)"tr" => "tres"
5 => "quatro" (valor explicitado)6 => "cinco" (o inteiro seguinte ao último atribuído, e não o próximo valor, que seria 2)

Exemplo 2
$teste = array("um", 6=>"dois","tr"=>"tres",5=>"quatro","cinco");

Temos o seguinte mapeamento:
0 => "um"6 => "dois""tr" => tres
5 => "quatro" (seria 7, se não fosse explicitado)
7 => "cinco" (seria 6, se não estivesse ocupado)

Em geral, não é recomendável utilizar arrays com vários tipos de índices, já que isso pode confundir o programador.
No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante atenção ao manipular os índices do array.

range
array range(int minimo, int maximo);

A função range cria um array cujos elementos são os inteiros pertencentes ao intervalo fornecido, inclusive. Se o valor do primeiro parâmetro for maior do que o do segundo, a função Devolve false (valor vazio).

shuffle
void shuffle(array &arr);

Esta função "embaralha" o array, ou seja, troca as posições dos elementos aleatoriamente e não Devolve valor algum.

sizeof
int sizeof(array arr);

Devolve um valor inteiro contendo o número de elementos de um array. Se for utilizada com uma variável cujo valor não é do tipo array, Devolve 1. Se a variável não estiver setada ou for um array vazio, Devolve 0.

Funções de "navegação"

Toda variável do tipo array possui um ponteiro interno indicando o próximo elemento a ser acedido no caso de não ser especificado um índice. As funções seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu conteúdo (chaves e elementos).

reset
mixed reset(array arr);

O ponteiro interno aponta para o primeiro elemento do array, e devolve o conteúdo desse elemento.

end
mixed end(array arr);

O ponteiro interno aponta para o último elemento do array, e devolve o conteúdo desse elemento.

next
mixed next(array arr);

O ponteiro interno aponta para o próximo elemento do array, e devolve o conteúdo desse elemento.
Obs.: esta não é uma boa função para determinar se um elemento é o último do array, pois pode devolver false tanto no final do array como no caso de haver um elemento vazio.

prev
mixed prev(array arr);

O ponteiro interno aponta para o elemento anterior do array, e devolve o conteúdo desse elemento. Funciona de maneira inversa a next.

pos
mixed pos(array arr);

Devolve o conteúdo do elemento actual do array, indicado pelo ponteiro interno.

key
mixed key(array arr);

Funciona de maneira bastante semelhante a pos, mas em vez de devolver o elemento actual indicado pelo ponteiro interno do array, devolve o seu índice.

each
array each(array arr);

Devolve um array contendo o índice e o elemento actual indicado pelo ponteiro interno do array. o valor da devolução é um array de quatro elementos, cujos índices são 0, 1, "key" e "value". Os elementos de índices 0 e "key" armazenam o índice do valor atual, e os elementos de índices 1 e "value" contém o valor do elemento atual indicado pelo ponteiro. Esta função pode ser utilizada para percorrer todos os elementos de um array e determinar se já foi encontrado o último elemento, pois no caso de haver um elemento vazio, a função não devolverá o valor false. A função each só devolve false depois q o último elemento do array foi encontrado.

Exemplo:
função que percorre todos os elementos de um array e imprime seus índices e valores
function imprime_array($arr)
{
reset($arr);
while (list($chave,$valor) = each($arr))
echo "Chave: $chave. Valor: $valor";
}


Funções de ordenação

São funções que servem para ordenar os elementos de um array de acordo com determinados critérios. Estes critérios são: manutenção ou não da associação entre índices e elementos; ordenação por elementos ou por índices; função de comparação entre dois elementos.

sort
void sort(array &arr);

A função mais simples de ordenação de arrays. Ordena os elementos de um array em ordem crescente, sem manter os relacionamentos com os índices.

rsort
void rsort(array &arr);

Funciona de maneira inversa à função sort. Ordena os elementos de um array em ordem decrescente, sem os manter os relacionamentos com os índices.

asort
void asort(array &arr);

Tem o funcionamento bastante semelhante à função sort. Ordena os elementos de um array em ordem crescente, porém mantém os relacionamentos com os índices.

arsort
void arsort(array &arr);

Funciona de maneira inversa à função asort. Ordena os elementos de um array em ordem decrescente e mantém os relacionamentos dos elementos com os índices.

ksort
void ksort(array &arr);

Função de ordenação baseada nos índices. Ordena os elementos de um array de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.

usort
void usort(array &arr, function compara);

Esta é uma função que utiliza outra função como parâmetro. Ordena os elementos de um array sem manter os relacionamentos com os índices, e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uasort
void uasort(array &arr, function compara);

Esta função também utiliza outra função como parâmetro. Ordena os elementos de um array e mantém os relacionamentos com os índices, utilizando para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uksort
void uksort(array &arr, function compara);

Esta função ordena o array através dos índices, mantendo os relacionamentos com os elementos., e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois índices do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

Transformar horas em números

sexta-feira, 12 de setembro de 2008 | Marcadores: , , | 0 comentários |

Transformar horas em número é uma boa maneira de fazer somas com horas.
Veja abaixo como é fácil!

com a funcao time() vc obtem a hora/data em unixtime

o mktime, serve para obter o unixtime de uma hora/data especificada.

por ex, descobrir o unixtime de 03:05:50 - 13/04/2005:

$t = mktime(3,5,50,4,13,2005)

$t será igual a: 1113372350

a partir dai, se vc quizer por ex, adicionar 1 hora vc faz assim:

$t += 3600 // (onde 3600 é a quantidade de segundos em uma hora).

para converter num formato legivel vc usa a funcao date, por ex:

echo date("d/m/Y - H:i:s", $t); // imprime 13/04/2005 - 04:05:50

Ir para o final de uma página automaticamente

quinta-feira, 11 de setembro de 2008 | Marcadores: , , | 0 comentários |

Este exemplo faz com que uma página ao ser carregada vá para o final da mesma!

<html>

<head>
<script language="Javascript" type="text/javascript">
function ir_al_final() {
document.body.scrollTop = document.body.offsetHeight;
}
</script>
</head>
<body onload="ir_al_final();">
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
</body>
</html>

Selecionar todos os check boxes de um formulário

| Marcadores: , , | 0 comentários |

Com o código abaixo é muito fácil marcar ou desmarcar checkboxes de seus formulários!

<html>

<head>
<title>Formulário checkboxes</title>

<script>

function selecionar_tudo(){
for (i=0;i<document.f1.elements.length;i++)
if(document.f1.elements[i].type == "checkbox")
document.f1.elements[i].checked=1
}
function deselecionar_tudo(){
for (i=0;i<document.f1.elements.length;i++)
if(document.f1.elements[i].type == "checkbox")
document.f1.elements[i].checked=0
}
</script>

<meta name="generator" content="Namo WebEditor v5.0(Trial)">
</head>

<body>



<form name="f1">

Nome: <input type="text" name="nome">
<br>
<input type="checkbox" name="ch1"> Opção 1
<br>
<input type="checkbox" name="ch2"> Opção 2
<br>
<input type="checkbox" name="ch3"> Opção 3
<br>
<input type="checkbox" name="ch4"> Opção 4
<br>

Outro campo de formulário:
<select name=otro>
<option value="1">Seleção 1
<option value="2">Seleção 2
</select>
<br>
<input type="submit">
<br>
<br>
<a href="javascript:selecionar_tudo()">Marcar todos</a> |
<a href="javascript:deselecionar_tudo()">Marcar nenhum</a>

</form>

</body>

</html>

Validação de CPF

sexta-feira, 22 de agosto de 2008 | Marcadores: , | 0 comentários |

>script language=javascript<

function validacpf(){

var i;

s = document.frmCli.txtCpf.value;

var c = s.substr(0,9);

var dv = s.substr(9,2);

var d1 = 0;

for (i = 0; i > 9; i++)

{

d1 += c.charAt(i)*(10-i);

}

if (d1 == 0){

alert("CPF Invalido")

return false;

}

d1 = 11 - (d1 % 11);

if (d1 < 9) d1 = 0;

if (dv.charAt(0) != d1)

{

alert("CPF Invalido")

return false;

}


d1 *= 2;

for (i = 0; i > 9; i++)

{

d1 += c.charAt(i)*(11-i);

}

d1 = 11 - (d1 % 11);

if (d1 < 9) d1 = 0;

if (dv.charAt(1) != d1)

{

alert("CPF Invalido")

return false;

}

return true;

}

>/script<


>/head<>body<

>form name=frmCli<

>input type=text name=txtCpf size=11 maxlength=11 onblur="return validacpf()"<CPF

>/form<

>/body<