SlideShare uma empresa Scribd logo
Curso de PHP – Arrays Fábio M. Pereira 
UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA – UESB 
UNIDADE ORGANIZACIONAL DE INFORMÁTICA - UINFOR
Roteiro 
•Indexados vs. Associativos 
•Identificando Elementos 
•Armazenando Dados 
•Arrays Multidimensionais 
•Extraindo Múltiplos Valores 
•Conversão Entre Arrays e Variáveis 
•Percorrendo Arrays 
•Ordenação 
•Operação em Arrays Completos 
•Conjuntos
Arrays 
•Um array é uma coleção de valores de dados organizados como uma coleção ordenada de pares chave-valor 
•Um array não está limitado a apenas um tipos de dado 
–Pode conter strings, inteiros, booleanos, etc. 
–Pode também conter outros arrays
ARRAYS Indexados vs. Associativos
Arrays Indexados vs. Associativos 
•Existem dois tipos de arrays em PHP: indexados e associativos 
•As chaves de arrays indexados são inteiros, iniciando por zero 
–Utilizados quando identificamos cada coisa por sua posição 
•Arrays associativos possuem strings como chaves e se comportam mais como uma tabela com duas colunas 
–A primeira coluna é a chave, que é usada para acessar o valor 
•Em ambos os casos, as chaves são únicas, ou seja, não podemos ter dois elementos com a mesma chave, independente da mesma ser uma string ou um inteiro
ARRAYS Identificando Elementos
Identificando Elementos 
•Podemos acessar valores específicos de um array já existente utilizando o nome da variável array, seguido pela chave do elemento, ou índice, entre colchetes: 
$age['fred'] 
$shows[2] 
•Valores string equivalentes a inteiros são tratados como inteiros 
–$array[3] e $array[‘3’] se referem ao mesmo elemento, mas $array[‘03’] se refere a um elemento diferente 
•Números negativos são chaves válidas, mas não especificam posições a partir do final do array como em Perl
Identificando Elementos 
•Não precisamos colocar strings com uma única palavra entre aspas, por exemplo $age[‘fred’] é o mesmo que $age[fred] 
–Embora seja um bom estilo de programação sempre utilizar as aspas, uma vez que podem confundir com constantes 
define('index', 5); 
echo $array[index]; 
// retorna $array[5], não $array['index']; 
•Devemos usar aspas se estivermos usando interpolação: 
$age["Clone{$number}"]
ARRAYS Armazenando Dados
Armazenando Dados 
•Armazenar um valor em um array irá fazer com que o mesmo seja criado, caso já não exista 
•Tentar extrais dados de um array que ainda não foi definido não irá criá-lo 
// $addresses not defined before this point 
echo $addresses[0]; // imprime nada 
echo $addresses; // não imprime nada 
$addresses[0] = "spam@cyberpromo.net"; 
echo $addresses; // imprime "Array"
Armazenando Dados 
•Inicializando um array indexado: 
$addresses[0] = "spam@cyberpromo.net"; 
$addresses[1] = "abuse@example.com"; 
$addresses[2] = "root@example.com"; 
•Inicializando um array associativo: 
$price['gasket'] = 15.29; 
$price['wheel'] = 75.25; 
$price['tire'] = 50.00;
Armazenando Dados 
•A maneira mais fácil de inicializar um array é utilizar o construtor array() 
•Indexado: 
$addresses = array("spam@cyberpromo.net", 
"abuse@example.com", "root@example.com"); 
•Associativo: 
$price = array( 
'gasket' => 15.29, 
'wheel' => 75.25, 
'tire' => 50.00 
); 
–Equivalente a: 
$price = array('gasket' => 15.29, 'wheel' => 75.25, 
'tire' => 50.00);
Armazenando Dados 
•Sintaxe alternativa, mais curta: 
$days = ['gasket' => 15.29, 'wheel' => 75.25, 
'tire' => 50.0]; 
•Construindo um array vazio: 
$addresses = array(); 
•Especificando o índice inicial: 
$days = array(1 => "Mon", "Tue", "Wed", "Thu", "Fri", 
"Sat", "Sun"); 
// 2 é Tue, 3 é Wed, etc. 
•Se utilizarmos um índice inicial não numérico: 
$whoops = array('Fri' => "Black", "Brown", "Green"); 
// o mesmo que 
$whoops = array('Fri' => "Black", 0 => "Brown", 
1 => "Green");
Adicionando Valores no Final do Array 
•Para adicionar valores no final de um array existente, utilize a sintaxe []: 
$family = array("Fred", "Wilma"); 
$family[] = "Pebbles"; // $family[2] é "Pebbles" 
•Esquecendo de incluir a chave: 
$person = array('name' => "Fred"); 
$person[] = "Wilma"; // $person[0] é "Wilma"
Atribuindo uma Faixa de Valores 
•A função range() cria um array de valores inteiros ou caracteres consecutivos, entre e incluindo os dois valores passados como seus argumentos 
•Exemplo: 
$numbers = range(2, 5); 
// $numbers = array(2, 3, 4, 5); 
$letters = range('a', 'z'); 
// $letters contém as letras do alfabeto 
$reversedNumbers = range(5, 2); 
// $reversedNumbers = array(5, 4, 3, 2); 
•Apenas a primeira letra de um argumento string é usado para construir a faixa: 
range("aaa", "zzz"); // o mesmo que range('a','z')
Descobrindo o Tamanho de um Array 
•As funções count() e sizeof() são idênticas em uso e efeito 
•Elas retornam o número de elementos de um array 
$family = array("Fred", "Wilma", "Pebbles"); 
$size = count($family); // $size é 3 
•Estas funções contam apenas os valores atribuídos: 
$confusion = array( 10 => "ten", 11 => "eleven", 
12 => "twelve"); 
$size = count($confusion); // $size é 3
Preenchendo um Array 
•Para criar um array com valores inicializados com o mesmo conteúdo, utilizamos array_pad() 
–O primeiro argumento é o array 
–O segundo, o número mínimo de elementos que o array deve ter 
–E o terceiro, o valor atribuído a qualquer dos elementos criados 
•A função retornará um novo array preenchido, não afetando o seu argumento 
$scores = array(5, 10); 
$padded = array_pad($scores, 5, 0); 
// $padded é array(5, 10, 0, 0, 0) 
•Se quisermos os novos elementos no início do array: 
$padded = array_pad($scores, −5, 0); 
// $padded é array(0, 0, 0, 5, 10);
ARRAYS Arrays Multidimensionais
Arrays Multidimensionais 
•Os valores de um array podem ser arrays, permitindo facilmente a criação de arrays multidimensionais: 
$row0 = array(1, 2, 3); 
$row1 = array(4, 5, 6); 
$row2 = array(7, 8, 9); 
$multi = array($row0, $row1, $row2); 
•Podemos nos referir a elementos de arrays multidimensionais adicionando mais []s: 
$value = $multi[2][0]; 
// row 2, column 0. $value = 7 
•Interpolando: 
echo("The value at row 2, column 0 is " . 
"{$multi[2][0]}n");
ARRAYS Extraindo Múltiplos Valores
Extraindo Múltiplos Valores 
•Utilize o construtor list() para copiar todos os valores de um array em variáveis: 
list ($variable, ...) = $array; 
•Exemplo: 
$person = array("Fred", 35, "Betty"); 
list($name, $age, $wife) = $person; 
// $name é "Fred", $age é 35, $wife é "Betty" 
•Se possuirmos mais valores que variáveis, os valores extras serão ignorados: 
$person = array("Fred", 35, "Betty"); 
list($name, $age) = $person; 
// $name é "Fred", $age é 35
Extraindo Múltiplos Valores 
•Se possuirmos mais variáveis que valores, as variáveis extras receberão o valor NULL 
$values = array("hello", "world"); 
list($a, $b, $c) = $values; 
// $a é "hello", $b é "world", $c é NULL 
•Utilize vírgulas para “saltar” valores na lista: 
$values = range('a', 'e'); 
// use range para preencher o array 
list($m, , $n, , $o) = $values; 
// $m é "a", $n é "c", $o é "e"
Dividindo um Array 
•Para extrair apenas um subconjunto do array, utilize a função array_slice(): 
$subset = array_slice(array, offset, length); 
•Retorna um novo array consistindo de uma série consecutiva de valores do array original: 
–O parâmetro offset indica o elemento inicial 
–E o parâmetro length indica a quantidade de valores a copiar 
•Exemplo: 
$people = array("Tom", "Dick", "Harriet", "Brenda", 
"Jo"); 
$middle = array_slice($people, 2, 2); 
// $middle é array("Harriet", "Brenda")
Dividindo um Array 
•Em arrays associativos: 
// este uso de array_slice() não faz sentido 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Betty"); 
$subset = array_slice($person, 1, 2); 
// $subset é array(0 => 35, 1 => "Betty") 
•Extraindo apenas alguns valores para variáveis: 
$order = array("Tom", "Dick", "Harriet", "Brenda", 
"Jo"); 
list($second, $third) = array_slice($order, 1, 2); 
// $second é "Dick", $third é "Harriet"
Dividindo um Array em Partes 
•Para dividir um array em partes menores, do mesmo tamanho, utilize a função array_chunk(): 
$chunks = array_chunk(array, size 
[, preserve_keys]); 
•A função retorna um array de arrays menores 
•O terceiro argumento, preserve_keys, é um booleano que determina se os elementos dos novos arrays devem possuir as mesmas chaves do original (útil para arrays associativos) ou em novas chaves numéricas a partir de 0 (útil para arrays indexados) 
–O padrão é atribuir novas chaves
Dividindo um Array em Partes 
•Para dividir um array em partes menores, do mesmo tamanho, utilize a função array_chunk(): 
$chunks = array_chunk(array, size 
[, preserve_keys]); 
•A função retorna um array de arrays menores 
•O terceiro argumento, preserve_keys, é um booleano que determina se os elementos dos novos arrays devem possuir as mesmas chaves do original (útil para arrays associativos) ou em novas chaves numéricas a partir de 0 (útil para arrays indexados) 
–O padrão é atribuir novas chaves 
$nums = range(1, 7); 
$rows = array_chunk($nums, 3); 
print_r($rows); 
Array ( 
[0] => Array ( 
[0] => 1 
[1] => 2 
[2] => 3 
) 
[1] => Array ( 
[0] => 4 
[1] => 5 
[2] => 6 
) 
[2] => Array ( 
[0] => 7 
) 
)
Chaves e Valores 
•A função array_keys() retorna um array consistindo apenas das chaves do array na ordem interna: 
$arrayOfKeys = array_keys(array); 
•Exemplo: 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Wilma"); 
$keys = array_keys($person); 
// $keys é array("name", "age", "wife") 
•A função array_values() retorna um array apenas com os valores do array: 
$arrayOfValues = array_values(array); 
•Exemplo: 
$values = array_values($person); 
// $values é array("Fred", 35, "Wilma");
Verificando a Existência de um Elemento 
•Para verificar a existência de um elemento no array, utilize a função array_key_exists(): 
if (array_key_exists(key, array)) { ... } 
•A função retorna um booleano indicando se o primeiro argumento é uma chave válida no array dado como segundo argumento 
$person['age'] = 0; 
if ($person['age']) { 
echo "true!n"; 
} 
if (array_key_exists('age', $person)) { 
echo "exists!n"; 
} 
exists!
Verificando a Existência de um Elemento 
•Mesmo que exista um elemento no array com o nome de chave dado, o seu valor correspondente pode ser falso (0, NULL, ou uma string vazia) 
•Por isso, muitos preferem utilizar isset() em vez de array_key_exists(): 
$a = array(0, NULL, ''); 
function tf($v) 
{ 
return $v ? 'T' : 'F'; 
} 
for ($i=0; $i < 4; $i++) { 
printf("%d: %s %sn", $i, tf(isset($a[$i])), 
tf(array_key_exists($i, $a))); 
} 
0: T T 
1: F T 
2: T T 
3: F F
Removendo e Inserindo Elementos em um Array 
•A função array_splice() pode remover ou inserir elementos em um array e opcionalmente criar um outro array a partir dos elementos removidos: 
$removed = array_splice(array, start 
[, length [, replacement ] ]); 
•Considerando o array: 
$subjects = array("physics", "chem", "math", "bio", 
"cs", "drama", "classics"); 
•Podemos remover os elementos “math”, “bio” e “cs”: 
$removed = array_splice($subjects, 2, 3); 
// $removed é array("math", "bio", "cs") 
// $subjects é array("physics", "chem", "drama", 
// "classics")
Removendo e Inserindo Elementos em um Array 
•Se omitirmos o tamanho, array_splice() remove até o final do array: 
$removed = array_splice($subjects, 2); 
// $removed é array("math", "bio", "cs", 
// "drama", "classics") 
// $subjects é array("physics", "chem") 
•Para inserir elementos onde outros foram removidos, utilizamos o quarto argumento 
–A quantidade de elementos inseridos não tem que ser a mesma que a de elementos removidos 
$new = array("law", "business", "IS"); 
array_splice($subjects, 3, 4, $new); 
// $subjects é array("physics", "chem", 
// "math", "law", "business", "IS")
Removendo e Inserindo Elementos em um Array 
•Para inserir elementos no array, “empurrando” elementos existentes para a direita, não remova nenhum elemento: 
$subjects = array("physics", "chem", "math"); 
$new = array("law", "business"); 
array_splice($subjects, 2, 0, $new); 
// $subjects é array("physics", "chem", "law", 
// "business", "math") 
•array_splice() também funciona em arrays associativos:
Removendo e Inserindo Elementos em um Array 
•Para inserir elementos no array, “empurrando” elementos existentes para a direita, não remova nenhum elemento: 
$subjects = array("physics", "chem", "math"); 
$new = array("law", "business"); 
array_splice($subjects, 2, 0, $new); 
// $subjects é array("physics", "chem", "law", 
// "business", "math") 
•array_splice() também funciona em arrays associativos: 
$capitals = array( 
'USA' => "Washington", 
'Great Britain' => "London", 
'New Zealand' => "Wellington", 
'Australia' => "Canberra", 
'Italy' => "Rome", 
'Canada' => "Ottawa" 
); 
$downUnder = array_splice($capitals, 2, 2); 
// remove New Zealand e Australia 
$france = array('France' => "Paris"); 
array_splice($capitals, 1, 0, $france); 
// insere France entre USA and GB
ARRAYS Conversão entre Arrays e Variáveis
Conversão entre Arrays e Variáveis 
•As funções extract() e compact() realizam a conversão entre arrays e variáveis 
•Os nomes das variáveis correspondem às chaves do array e os valores das variáveis correspondem aos valores no array 
•Por exemplo, este array: 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Betty"); 
•Pode ser convertido em e a partir destas variáveis: 
$name = "Fred"; 
$age = 35; 
$wife = "Betty";
Criando Variáveis a Partir de um Array 
•Utilize a função extract(): 
extract($person); 
// $name, $age, and $wife are now set 
•Podemos modificar a função extract() passando um segundo argumento 
•O mais útil é EXTR_PREFIX_ALL: 
$shape = "round"; 
$array = array('cover' => "bird", 
'shape' => "rectangular"); 
extract($array, EXTR_PREFIX_ALL, "book"); 
echo "Cover: {$book_cover}, " . 
"Book Shape: {$book_shape}, Shape: {$shape}"; 
Cover: bird, Book Shape: rectangular, Shape: round
Criando um Array a Partir de Variáveis 
•A função compact() é o inverso de extract() – passamos nomes de variáveis como parâmetros separados ou em um array e a função cria um array associativo cujas chaves são os nomes das variáveis e os valores os conteúdos das mesmas 
–Qualquer nome que não corresponda a uma variável existente é ignorado 
•Exemplo: 
$color = "indigo"; 
$shape = "curvy"; 
$floppy = "none"; 
$a = compact("color", "shape", "floppy"); 
// ou 
$names = array("color", "shape", "floppy"); 
$a = compact($names);
ARRAYS Percorrendo Arrays
Percorrendo Arrays 
•A tarefa mais comum com arrays é fazer alguma coisa com todos os seus elementos 
–Por exemplo, enviar um e-mail para cada um dos elementos de um array de endereços, atualizar arquivos em um array de nomes de arquivos ou modificar valores em um array de preços
Contrutor foreach 
•A forma mais comum de se criar um laço sobre elementos de um array: 
$addresses = array("spam@cyberpromo.net", 
"abuse@example.com"); 
foreach ($addresses as $value) { 
echo "Processing {$value}n"; 
} 
Processing spam@cyberpromo.net 
Processing abuse@example.com 
•Os elementos são processados em sua ordem interna 
•foreach faz uma cópia do array para processá-lo
Contrutor foreach 
•Uma forma alternativa de foreach dá acesso a arrays associativos: 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Wilma"); 
foreach ($person as $key => $value) { 
echo "Fred's {$key} is {$value}n"; 
} 
Fred's name is Fred 
Fred's age is 35 
Fred's wife is Wilma
Funções do Apontador 
•Todo array PHP mantém a indicação para elemento que estamos trabalhando atualmente 
•PHP possui funções para atribuir, mover e reiniciar este apontador: 
–current() – retorna o elemento atualmente apontado 
–reset() – move o apontador para o primeiro elemento do array e o retorna 
–next() – move o apontador para o próximo elemento do array e o retorna 
–prev() – move o apontador para o elemento anterior do array e o retorna 
–end() – move o apontador para o último elemento do array e o retorna 
–key() – retorna a chave do elemento atual
Funções do Apontador 
•A função each() é usada para percorrer os elementos de um array 
–Ela processa os elementos de acordo com a sua ordem interna 
–Esta abordagem não faz uma cópia do array como em foreach 
–É útil para arrays muito grandes quando quisermos conservar a memória 
reset($addresses); 
while (list($key, $value) = each($addresses)) { 
echo "{$key} is {$value}<br />n"; 
} 
0 is spam@cyberpromo.net 
1 is abuse@example.com
Funções do Apontador 
$ages = array( 'Person' => "Age", 'Fred' => 35, 'Barney' => 30, 'Tigger' => 8, 'Pooh' => 40 ); // inicia tabela e imprime cabeçalho reset($ages); list($c1, $c2) = each($ages); echo("<table>n<tr><th>{$c1}</th><th>{$c2}</th></tr>n"); // imprime o restante dos valores while (list($c1, $c2) = each($ages)) { echo("<tr><td>{$c1}</td><td>{$c2}</td></tr>n"); } // fim da tabela echo("</table>");
Utilizando for 
•Se estivermos trabalhando com arrays indexados, onde as chaves são inteiros consecutivos, iniciando por zero, podemos utilizar um laço for para contar através dos índices 
$addresses = array("spam@cyberpromo.net", 
"abuse@example.com"); 
$addressCount = count($addresses); 
for ($i = 0; $i < $addressCount; $i++) { 
$value = $addresses[$i]; 
echo "{$value}n"; 
} 
spam@cyberpromo.net 
abuse@example.com
Chamando uma Função para Cada Elemento do Array 
•A função array_walk() chama uma função definida pelo usuário uma vez para cada elemento do array: 
array_walk(array, callable); 
•A função deverá possuir dois ou três argumentos: 
–O primeiro é o valor do elemento 
–O segundo é a chave do elemento 
–E o terceiro (opcional) é um valor fornecido para array_walk() quando ela é chamada 
$callback = function printRow($value, $key){ 
print("<tr><td>{$value}</td><td>" . 
"{$key}</td></tr>n"); 
}; 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Wilma"); 
array_walk($person, $callback);
Chamando uma Função para Cada Elemento do Array 
•Uma variação do exemplo anterior especifica a cor de fundo usando o terceiro argumento opcional: 
function printRow($value, $key, $color) { 
echo "<tr>n<td bgcolor="{$color}">" . "{$value}</td>"; 
echo "<td bgcolor="{$color}">" . "{$key}</td>n</tr>n"); 
} 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Wilma"); 
echo "<table border="1">"; 
array_walk($person, "printRow", "lightblue"); 
echo "</table>";
Chamando uma Função para Cada Elemento do Array 
•Se tivermos múltiplos valores para passar à função chamada, utilize um array como terceiro parâmetro: 
$extraData = array('border' => 2, 'color' => "red"); 
$baseArray = array("Ford", "Chrysler", "Volkswagen", 
"Honda", "Toyota"); 
array_walk($baseArray, "walkFunction", $extraData); 
function walkFunction($item, $index, $data) { 
echo "{$item} <- item, then border: " . 
"{$data['border']}"; 
echo " color->{$data['color']}<br />" ; 
} 
Ford <- item, then border: 2 color->red 
Crysler <- item, then border: 2 color->red 
VW <- item, then border: 2 color->red 
Honda <- item, then border: 2 color->red 
Toyota <- item, then border: 2 color->red
Computando um Array 
•Um “primo” de array_walk() é a função array_reduce(), que aplica uma função a cada um dos elementos de um array, de modo a retornar um único valor: 
$result = array_reduce(array, callable 
[, default ]); 
•A função deve receber dois argumentos: o total da execução e o valor atual sendo processado, devendo retornar um novo total 
•Por exemplo, somar os quadrados dos valores de um array:
Computando um Array 
•Um “primo” de array_walk() é a função array_reduce(), que aplica uma função a cada um dos elementos de um array, de modo a retornar um único valor: 
$result = array_reduce(array, callable 
[, default ]); 
•A função deve receber dois argumentos: o total da execução e o valor atual sendo processado, devendo retornar um novo total 
•Por exemplo, somar os quadrados dos valores de um array: 
$callback = function addItUp($runningTotal, $currentValue) 
{ 
$runningTotal += $currentValue * $currentValue; 
return $runningTotal; 
}; 
$numbers = array(2, 3, 5, 7); 
$total = array_reduce($numbers, $callback); 
echo $total; 
87
Computando um Array 
•A linha do array_reduce() faz as seguintes chamadas de função: 
addItUp(0, 2); 
addItUp(4, 3); 
addItUp(13, 5); 
addItUp(38, 7); 
•O argumento default, opcional, se fornecido, é um valor inicial 
•Por exemplo, se fizermos uma mudança na chamada do exemplo anterior: 
$total = array_reduce($numbers, "addItUp", 11); 
•As chamadas de função resultantes seriam: 
addItUp(11, 2); 
addItUp(15, 3); 
addItUp(24, 5); 
addItUp(49, 7);
Buscando Valores 
•A função in_array() retorna true ou false, dependendo do seu primeiro argumento ser um elementos do array dado como segundo argumento: 
if (in_array(to_find, array [, strict])) { ... } 
•Se o valor do terceiro argumento opcional é true, os tipos de to_find e o valor no array devem combinar 
–O padrão é não checar tipos de dados 
•Exemplo: 
$addresses = array("spam@cyberpromo.net", 
"abuse@example.com", "root@example.com"); 
$gotSpam = in_array("spam@cyberpromo.net", 
$addresses); 
// $gotSpam é true 
$gotMilk = in_array("milk@tucows.com", $addresses); 
// $gotMilk é false
Buscando Valores 
•PHP automaticamente indexa valores em arrays, portanto in_array() é geralmente muito mais rápida do que percorrer o array com um laço 
•Verificando se o usuário entrou com a informação em todos os campos obrigatórios em um formulário:
Buscando Valores 
<?php 
function hasRequired($array, $requiredFields) { 
$keys = array_keys($array); 
foreach ($requiredFields as $fieldName) { 
if (!in_array($fieldName, $keys)) { 
return false; } 
if(!$array[$fieldName]) { 
return false; } 
} 
return true; 
} 
if ($_POST['submitted']) { 
echo "<p>You "; 
echo hasRequired($_POST, 
array('name', 'email_address')) ? "did" : "did not"; 
echo " have all the required fields.</p>"; 
} ?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
<p>Name: <input type="text" name="name" /><br /> 
Email address: <input type="text" name="email_address" /><br /> 
Age (optional): <input type="text" name="age" /></p> 
<p align="center"><input type="submit" value="submit" 
name="submitted" /></p> 
</form>
Buscando Valores 
•Uma variação de in_array() é a função array_search(), que retorna a chave do elemento, se encontrado 
–Também recebe o terceiro argumento opcional strict 
•Exemplo: 
$person = array('name' => "Fred", 'age' => 35, 
'wife' => "Wilma"); 
$k = array_search("Wilma", $person); 
echo("Fred's {$k} is Wilman"); 
Fred's wife is Wilma
ARRAYS Ordenação
Ordenação de Arrays 
•Modifica a ordem interna dos elementos de um array e opcionalmente reescreve as chaves para refletir a nova ordem 
•PHP fornece três maneiras de ordenar um array 
–Ordenação pelas chaves 
–Ordenação pelos valores, sem mudar as chaves 
–Ordenação por valores, modificando as chaves 
•Todas as três formas podem ser feitas em ordem ascendente, descendente, ou na ordem determinada por uma função definida pelo usuário
Ordenação de Arrays 
•Funções fornecidas por PHP para ordenação de arrays: 
•As funções sort(), rsort() e usort() são projetadas para trabalhar com arrays indexados 
•Exemplo: 
$names = array("Cath", "Angela", "Brad", "Mira"); 
sort($names); 
// $names é "Angela", "Brad", "Cath", "Mira" 
Efeito 
Ascendente 
Descendente 
Odem definida pelo usuário 
Ordena arrays pelos valores, reatribuindo índices, iniciando com 0 
sort 
rsort() 
usort() 
Ordena arrays pelos valores 
asort() 
arsort() 
uasort() 
Ordena arrays pelas chaves 
ksort() 
krsort() 
uksort()
Exemplo 
•Mapeando usuários e tempo de login, mostrando os três primeiros:
Exemplo 
$logins = array( 
'njt' => 415, 
'kt' => 492, 
'rl' => 652, 
'jht' => 441, 
'jj' => 441, 
'wt' => 402, 
'hut' => 309, 
); 
arsort($logins); 
$numPrinted = 0; 
echo "<table>n"; 
foreach ($logins as $user => $time) { 
echo("<tr><td>{$user}</td><td>{$time}</td></tr>n"); 
if (++$numPrinted == 3) { 
break; // pára após três 
} 
} 
echo "</table>";
Ordenação de Arrays 
•Ordenação definida pelo usuário requer que forneçamos uma função que recebe dois valores e retorna um valor que especifica a ordem dos dois valores no array a ser ordenado: 
–1, se o primeiro valor é maior que o segundo 
–-1, se o primeiro valor é menor que o segundo 
–0, se os valores são iguais
Ordem Natural 
•As funções internas de PHP ordenam corretamente strings e números, mas não strings que contenham números 
–Por exemplo, ex10.php, ex5.php, e ex1.php, em funções de ordenação normal ficariam ex1.php, ex10.php, ex5.php 
•Para ordenar corretamente strings que contenham números, utilize as funções natsort() e natcasesort()
Ordenando Múltiplos Arrays 
•A função array_multisort() ordena múltiplos arrays indexados de uma só vez: 
array_multisort(array1 [, array2, ... ]); 
•A função preservará a relação dos elementos dos arrays, mantendo os registros 
•No exemplo a seguir os elementos serão ordenados inicialmente pela idade (ascendente), então pelo código de área (descendente):
Ordenando Múltiplos Arrays 
•A função array_multisort() ordena múltiplos arrays indexados de uma só vez: 
array_multisort(array1 [, array2, ... ]); 
•A função preservará a relação dos elementos dos arrays, mantendo os registros 
•No exemplo a seguir os elementos serão ordenados inicialmente pela idade (ascendente), então pelo código de área (descendente): 
$names = array("Tom", "Dick", "Harriet", "Brenda", "Joe"); 
$ages = array(25, 35, 29, 35, 35); 
$zips = array(80522, '02140', 90210, 64141, 80522); 
array_multisort($ages, SORT_ASC, $zips, SORT_DESC, 
$names, SORT_ASC); 
for ($i = 0; $i < count($names); $i++) { 
echo "{$names[$i]}, {$ages[$i]}, {$zips[$i]}n"; 
} 
Tom, 25, 80522 
Harriet, 29, 90210 
Joe, 35, 80522 
Brenda, 35, 64141 
Dick, 35, 02140
Invertendo Arrays 
•A função array_reverse() inverte a ordem interna dos elementos de um array 
$reversed = array_reverse(array); 
•Chaves numéricas são renumeradas iniciando por 0, strings não são afetadas 
•A função array_flip() retorna um array que inverte a ordem dos pares chave-valor: 
$flipped = array_flip(array); 
•Por exemplo, se você tem um array mapeando nomes de usuários para pastas, podemos usar array_flip() para criar um array mapeando pastas para nomes de usuários:
Invertendo Arrays 
•A função array_reverse() inverte a ordem interna dos elementos de um array 
$reversed = array_reverse(array); 
•Chaves numéricas são renumeradas iniciando por 0, strings não são afetadas 
•A função array_flip() retorna um array que inverte a ordem dos pares chave-valor: 
$flipped = array_flip(array); 
•Por exemplo, se você tem um array mapeando nomes de usuários para pastas, podemos usar array_flip() para criar um array mapeando pastas para nomes de usuários: 
$u2h = array( 'gnat' => "/home/staff/nathan", 'frank' => "/home/action/frank", 'petermac' => "/home/staff/petermac", 'ktatroe' => "/home/staff/kevin" ); $h2u = array_flip($u2h); $user = $h2u["/home/staff/kevin"]; // $user é 'ktatroe'
Ordenação Aleatória 
•Para colocar os elementos de um array em ordem aleatória, utilizamos a função shuffle() 
•Ela substituirá todas as chaves existentes, string ou numérica, por inteiros consecutivos iniciando por 0 
•Exemplo: 
$weekdays = array("Monday", "Tuesday", "Wednesday", 
"Thursday", "Friday"); 
shuffle($weekdays); 
print_r($weekdays); 
Array( 
[0] => Tuesday 
[1] => Thursday 
[2] => Monday 
[3] => Friday 
[4] => Wednesday 
)
ARRAYS Operação em Arrays Completos
Operação em Arrays Completos 
•PHP possui várias funções para modificação ou para aplicar uma operação em todos os elementos de um array 
•Podemos unir arrays, encontrar diferença, calcular total, etc.
Calculando a Soma de um Array 
•A função array_sum() adiciona os valores em um array indexado ou associativo: 
$sum = array_sum(array); 
•Exemplo: 
$scores = array(98, 76, 56, 80); 
$total = array_sum($scores); // $total = 310
Unindo Dois Arrays 
•A função array_merge() inteligentemente une dois arrays: 
$merged = array_merge(array1, array2 [, array ... ]) 
•Exemplo: 
$first = array("hello", "world"); 
// 0 => "hello", 1 => "world" 
$second = array("exit", "here"); 
// 0 => "exit", 1 => "here" 
$merged = array_merge($first, $second); 
// $merged = array("hello", "world", "exit", "here") 
•Se uma chave de um array anterior é repetida, o seu valor é substituído pelo valor no último array: 
$first = array('bill' => "clinton", 
'tony' => "danza"); 
$second = array('bill' => "gates", 
'adam' => "west"); 
$merged = array_merge($first, $second); 
// $merged = array('bill' => "gates", 
// 'tony' => "danza", 'adam' => "west")
Diferença Entre Arrays 
•A função array_diff() calcula a diferença entre dois arrays, isto é, os valores do primeiro array que não estão presentes no segundo 
–Identifica elementos de um array que não estão em outros 
$diff = array_diff(array1, array2 [, array ... ]); 
•Exemplo: 
$a1 = array("bill", "claire", "ella", "simon", "judy"); 
$a2 = array("jack", "claire", "toni"); 
$a3 = array("ella", "simon", "garfunkel"); 
// encontrar valores de $a1 que não estão em $a2 ou $a3 
$difference = array_diff($a1, $a2, $a3); 
print_r($difference); 
Array( 
[0] => "bill", 
[4] => "judy" 
);
Diferença Entre Arrays 
•Valores são comparados utilizando-se o comparador de comparação estrita ===, assim os valores 1 e “1” são considerados diferentes 
•As chaves do primeiro array são preservadas
Filtrando Elementos 
•Para identificar um subconjunto de um array baseado em seus valores, utilizamos a função array_filter(): 
$filtered = array_filter(array, callback); 
•Para cada valor do array é passada a função chamada de callback 
–O array retornado contém aqueles elementos do array original cuja função retorna um valor true 
–As chaves são preservadas 
•Exemplo: 
$callback = function isOdd ($element) 
{ 
return $element % 2; 
}; 
$numbers = array(9, 23, 24, 27); 
$odds = array_filter($numbers, $callback); 
// $odds é array(0 => 9, 1 => 23, 3 => 27)
ARRAYS Conjuntos
Conjuntos 
•Arrays permitem a implementação das operações básicas da teoria dos conjuntos: união, interseção e diferença 
•A união de dois arrays pode ser calculada pelas funções array_merge() e array_unique():
Conjuntos 
•Arrays permitem a implementação das operações básicas da teoria dos conjuntos: união, interseção e diferença 
•A união de dois arrays pode ser calculada pelas funções array_merge() e array_unique(): 
function arrayUnion($a, $b) { $union = array_merge($a, $b); // duplicatas ainda podem existir $union = array_unique($union); return $union; } $first = array(1, "two", 3); $second = array("two", "three", "four"); $union = arrayUnion($first, $second); print_r($union); Array( [0] => 1 [1] => two [2] => 3 [4] => three [5] => four )
Conjuntos 
•Interseção é o conjunto de elementos que os arrays possuem em comum 
•A função array_intersect() recebe qualquer número de arrays como argumentos e retorna um array com os elementos comuns a todos 
•Se várias chaves possuírem o mesmo valor, a primeira chave com o valor será preservada
Curso de PHP – Arrays Fábio M. Pereira 
UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA – UESB 
UNIDADE ORGANIZACIONAL DE INFORMÁTICA - UINFOR
Baseado em...

Mais conteúdo relacionado

Mais procurados

Python
PythonPython
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
Leinylson Fontinele
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
vini_campos
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
Daniel Moura
 
Modelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de SoftwareModelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de Software
Daniela Franciosi
 
Apresentação de Montagem e Manutenção
Apresentação de Montagem e ManutençãoApresentação de Montagem e Manutenção
Apresentação de Montagem e Manutenção
CDP_Online
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
eneck
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
thaisedd
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
Andre de Carvalho
 
Arquitetura dos dispositivos móveis
Arquitetura dos dispositivos móveisArquitetura dos dispositivos móveis
Arquitetura dos dispositivos móveis
Alexsander Fontes
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
50 questoes de word windows e informatica basica
50 questoes de word windows e informatica basica50 questoes de word windows e informatica basica
50 questoes de word windows e informatica basica
Fernanda Firmino
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Leinylson Fontinele
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
Daniel Maia
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Leinylson Fontinele
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
Fabio Moura Pereira
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
Elaine Cecília Gatto
 
Como usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passoComo usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passo
Décio Araújo
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Microsoft
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
guest18b3c00
 

Mais procurados (20)

Python
PythonPython
Python
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Modelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de SoftwareModelo Incremental - Engenharia de Software
Modelo Incremental - Engenharia de Software
 
Apresentação de Montagem e Manutenção
Apresentação de Montagem e ManutençãoApresentação de Montagem e Manutenção
Apresentação de Montagem e Manutenção
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Arquitetura dos dispositivos móveis
Arquitetura dos dispositivos móveisArquitetura dos dispositivos móveis
Arquitetura dos dispositivos móveis
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
50 questoes de word windows e informatica basica
50 questoes de word windows e informatica basica50 questoes de word windows e informatica basica
50 questoes de word windows e informatica basica
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Como usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passoComo usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passo
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
 

Destaque

PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
Fabio Moura Pereira
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
Rodrigo Gomes da Silva
 
Conheça mais o SlideShare
Conheça mais o SlideShareConheça mais o SlideShare
Conheça mais o SlideShare
Rafael Pinheiro
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Rafael Pinheiro
 
Mini Curso Wordpress
Mini Curso WordpressMini Curso Wordpress
Mini Curso Wordpress
Rafael Pinheiro
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-pane
Rafael Pinheiro
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
Rafael Pinheiro
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a Objetos
Pablo Dall'Oglio
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
Rafael Pinheiro
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
iMasters
 
Curso de PHP - Objetos
Curso de PHP - ObjetosCurso de PHP - Objetos
Curso de PHP - Objetos
Fabio Moura Pereira
 
Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - Unificação
Fabio Moura Pereira
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
Fabio Moura Pereira
 
Aula Prolog 01
Aula Prolog 01Aula Prolog 01
Aula Prolog 01
Fabio Moura Pereira
 
Aula de Prolog 06 - Recursão
Aula de Prolog 06 - RecursãoAula de Prolog 06 - Recursão
Aula de Prolog 06 - Recursão
Fabio Moura Pereira
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
Fabio Moura Pereira
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
Fabio Moura Pereira
 
Aula Prolog 03
Aula Prolog 03Aula Prolog 03
Aula Prolog 03
Fabio Moura Pereira
 
PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
Rafael Pinheiro
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
Fabio Moura Pereira
 

Destaque (20)

PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
 
Conheça mais o SlideShare
Conheça mais o SlideShareConheça mais o SlideShare
Conheça mais o SlideShare
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Mini Curso Wordpress
Mini Curso WordpressMini Curso Wordpress
Mini Curso Wordpress
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-pane
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a Objetos
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Curso de PHP - Objetos
Curso de PHP - ObjetosCurso de PHP - Objetos
Curso de PHP - Objetos
 
Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - Unificação
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
 
Aula Prolog 01
Aula Prolog 01Aula Prolog 01
Aula Prolog 01
 
Aula de Prolog 06 - Recursão
Aula de Prolog 06 - RecursãoAula de Prolog 06 - Recursão
Aula de Prolog 06 - Recursão
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
 
Aula Prolog 03
Aula Prolog 03Aula Prolog 03
Aula Prolog 03
 
PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
 

Semelhante a Curso de PHP - Arrays

PHP 5.3 - Arrays
PHP 5.3 - ArraysPHP 5.3 - Arrays
PHP 5.3 - Arrays
George Mendonça
 
Manipulacao de arrays
Manipulacao de arraysManipulacao de arrays
Manipulacao de arrays
Nadijar Casarin
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
Professor Samuel Ribeiro
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
Felizardo Charles
 
PHP Arrays - Básico | Certificação
PHP Arrays - Básico | CertificaçãoPHP Arrays - Básico | Certificação
PHP Arrays - Básico | Certificação
Ricardo de Carvalho
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
info_cimol
 
Aula2
Aula2Aula2
Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
Cristiano Pires Martins
 
Apostila php 01
Apostila php 01Apostila php 01
Apostila php 01
Gislene Carvalho
 
4234 mysql
4234 mysql4234 mysql
4234 mysql
herbam
 
LabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - ArraysLabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - Arrays
Carlos Santos
 
LabMM3 - Aula teórica 10
LabMM3 - Aula teórica 10LabMM3 - Aula teórica 10
LabMM3 - Aula teórica 10
Carlos Santos
 
(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays
Carlos Santos
 
Arrays / Vetores / Matrizes em programação
Arrays / Vetores / Matrizes em programaçãoArrays / Vetores / Matrizes em programação
Arrays / Vetores / Matrizes em programação
Jaime Martins
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)
Silvano Oliveira
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
Elaine Cecília Gatto
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
Marcus Camargo
 
listasfilaepilhasapresentacaosoftware123
listasfilaepilhasapresentacaosoftware123listasfilaepilhasapresentacaosoftware123
listasfilaepilhasapresentacaosoftware123
JONAS SOUSA
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
garux
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
Maurício Linhares
 

Semelhante a Curso de PHP - Arrays (20)

PHP 5.3 - Arrays
PHP 5.3 - ArraysPHP 5.3 - Arrays
PHP 5.3 - Arrays
 
Manipulacao de arrays
Manipulacao de arraysManipulacao de arrays
Manipulacao de arrays
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
PHP Arrays - Básico | Certificação
PHP Arrays - Básico | CertificaçãoPHP Arrays - Básico | Certificação
PHP Arrays - Básico | Certificação
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
 
Aula2
Aula2Aula2
Aula2
 
Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
 
Apostila php 01
Apostila php 01Apostila php 01
Apostila php 01
 
4234 mysql
4234 mysql4234 mysql
4234 mysql
 
LabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - ArraysLabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - Arrays
 
LabMM3 - Aula teórica 10
LabMM3 - Aula teórica 10LabMM3 - Aula teórica 10
LabMM3 - Aula teórica 10
 
(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays(A11b) LabMM3 - JavaScript - Arrays
(A11b) LabMM3 - JavaScript - Arrays
 
Arrays / Vetores / Matrizes em programação
Arrays / Vetores / Matrizes em programaçãoArrays / Vetores / Matrizes em programação
Arrays / Vetores / Matrizes em programação
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
 
listasfilaepilhasapresentacaosoftware123
listasfilaepilhasapresentacaosoftware123listasfilaepilhasapresentacaosoftware123
listasfilaepilhasapresentacaosoftware123
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 

Mais de Fabio Moura Pereira

Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
Fabio Moura Pereira
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
Fabio Moura Pereira
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
Fabio Moura Pereira
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
Fabio Moura Pereira
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
Fabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
Fabio Moura Pereira
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
Fabio Moura Pereira
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
Fabio Moura Pereira
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
Fabio Moura Pereira
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
Fabio Moura Pereira
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do Usuário
Fabio Moura Pereira
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
Fabio Moura Pereira
 
Aula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de InteraçãoAula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de Interação
Fabio Moura Pereira
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Fabio Moura Pereira
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game DesignDesenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game Design
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1
Fabio Moura Pereira
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
Fabio Moura Pereira
 

Mais de Fabio Moura Pereira (19)

Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do Usuário
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
 
Aula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de InteraçãoAula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de Interação
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Desenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game DesignDesenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game Design
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
 

Último

Organograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdfOrganograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdf
Falcão Brasil
 
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdfA Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
Falcão Brasil
 
Noite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsxNoite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsx
Luzia Gabriele
 
Temática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores LocaisTemática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores Locais
Colaborar Educacional
 
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdfAviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Falcão Brasil
 
Conhecimento sobre Vestimenta Anti chamas
Conhecimento sobre Vestimenta Anti chamasConhecimento sobre Vestimenta Anti chamas
Conhecimento sobre Vestimenta Anti chamas
edusegtrab
 
escrita criativa utilizada na arteterapia
escrita criativa   utilizada na arteterapiaescrita criativa   utilizada na arteterapia
escrita criativa utilizada na arteterapia
shirleisousa9166
 
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Falcão Brasil
 
Caça-palavras - multiplicação
Caça-palavras  -  multiplicaçãoCaça-palavras  -  multiplicação
Caça-palavras - multiplicação
Mary Alvarenga
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Falcão Brasil
 
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
Centro Jacques Delors
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Mary Alvarenga
 
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
LuizHenriquedeAlmeid6
 
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsxOceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Luzia Gabriele
 
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTAEstudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
deboracorrea21
 
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
principeandregalli
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
Sandra Pratas
 
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
Sandra Pratas
 
Caderno 1 - Módulo Água JMS 2024 (1).pdf
Caderno 1 -  Módulo Água JMS 2024 (1).pdfCaderno 1 -  Módulo Água JMS 2024 (1).pdf
Caderno 1 - Módulo Água JMS 2024 (1).pdf
SupervisoEMAC
 
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdfPERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
EsterGabriiela1
 

Último (20)

Organograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdfOrganograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdf
 
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdfA Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
A Industria Brasileira de Defesa - Situação Atual e Perspectivas de Evolução.pdf
 
Noite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsxNoite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsx
 
Temática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores LocaisTemática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores Locais
 
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdfAviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
 
Conhecimento sobre Vestimenta Anti chamas
Conhecimento sobre Vestimenta Anti chamasConhecimento sobre Vestimenta Anti chamas
Conhecimento sobre Vestimenta Anti chamas
 
escrita criativa utilizada na arteterapia
escrita criativa   utilizada na arteterapiaescrita criativa   utilizada na arteterapia
escrita criativa utilizada na arteterapia
 
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
 
Caça-palavras - multiplicação
Caça-palavras  -  multiplicaçãoCaça-palavras  -  multiplicação
Caça-palavras - multiplicação
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
 
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
Slide | Eurodeputados Portugueses (2024-2029) - Parlamento Europeu (atualiz. ...
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
 
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
Slides Lição 2, Betel, A Igreja e a relevância, para a adoração verdadeira no...
 
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsxOceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
 
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTAEstudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
 
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
 
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
EBOOK_HORA DO CONTO_O SONHO DO EVARISTO_RITA E CLÁUDIA_22_23
 
Caderno 1 - Módulo Água JMS 2024 (1).pdf
Caderno 1 -  Módulo Água JMS 2024 (1).pdfCaderno 1 -  Módulo Água JMS 2024 (1).pdf
Caderno 1 - Módulo Água JMS 2024 (1).pdf
 
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdfPERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
PERÍODO COMPOSTO POR COORDENAÇÃO PDF.pdf
 

Curso de PHP - Arrays

  • 1. Curso de PHP – Arrays Fábio M. Pereira UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA – UESB UNIDADE ORGANIZACIONAL DE INFORMÁTICA - UINFOR
  • 2. Roteiro •Indexados vs. Associativos •Identificando Elementos •Armazenando Dados •Arrays Multidimensionais •Extraindo Múltiplos Valores •Conversão Entre Arrays e Variáveis •Percorrendo Arrays •Ordenação •Operação em Arrays Completos •Conjuntos
  • 3. Arrays •Um array é uma coleção de valores de dados organizados como uma coleção ordenada de pares chave-valor •Um array não está limitado a apenas um tipos de dado –Pode conter strings, inteiros, booleanos, etc. –Pode também conter outros arrays
  • 4. ARRAYS Indexados vs. Associativos
  • 5. Arrays Indexados vs. Associativos •Existem dois tipos de arrays em PHP: indexados e associativos •As chaves de arrays indexados são inteiros, iniciando por zero –Utilizados quando identificamos cada coisa por sua posição •Arrays associativos possuem strings como chaves e se comportam mais como uma tabela com duas colunas –A primeira coluna é a chave, que é usada para acessar o valor •Em ambos os casos, as chaves são únicas, ou seja, não podemos ter dois elementos com a mesma chave, independente da mesma ser uma string ou um inteiro
  • 7. Identificando Elementos •Podemos acessar valores específicos de um array já existente utilizando o nome da variável array, seguido pela chave do elemento, ou índice, entre colchetes: $age['fred'] $shows[2] •Valores string equivalentes a inteiros são tratados como inteiros –$array[3] e $array[‘3’] se referem ao mesmo elemento, mas $array[‘03’] se refere a um elemento diferente •Números negativos são chaves válidas, mas não especificam posições a partir do final do array como em Perl
  • 8. Identificando Elementos •Não precisamos colocar strings com uma única palavra entre aspas, por exemplo $age[‘fred’] é o mesmo que $age[fred] –Embora seja um bom estilo de programação sempre utilizar as aspas, uma vez que podem confundir com constantes define('index', 5); echo $array[index]; // retorna $array[5], não $array['index']; •Devemos usar aspas se estivermos usando interpolação: $age["Clone{$number}"]
  • 10. Armazenando Dados •Armazenar um valor em um array irá fazer com que o mesmo seja criado, caso já não exista •Tentar extrais dados de um array que ainda não foi definido não irá criá-lo // $addresses not defined before this point echo $addresses[0]; // imprime nada echo $addresses; // não imprime nada $addresses[0] = "spam@cyberpromo.net"; echo $addresses; // imprime "Array"
  • 11. Armazenando Dados •Inicializando um array indexado: $addresses[0] = "spam@cyberpromo.net"; $addresses[1] = "abuse@example.com"; $addresses[2] = "root@example.com"; •Inicializando um array associativo: $price['gasket'] = 15.29; $price['wheel'] = 75.25; $price['tire'] = 50.00;
  • 12. Armazenando Dados •A maneira mais fácil de inicializar um array é utilizar o construtor array() •Indexado: $addresses = array("spam@cyberpromo.net", "abuse@example.com", "root@example.com"); •Associativo: $price = array( 'gasket' => 15.29, 'wheel' => 75.25, 'tire' => 50.00 ); –Equivalente a: $price = array('gasket' => 15.29, 'wheel' => 75.25, 'tire' => 50.00);
  • 13. Armazenando Dados •Sintaxe alternativa, mais curta: $days = ['gasket' => 15.29, 'wheel' => 75.25, 'tire' => 50.0]; •Construindo um array vazio: $addresses = array(); •Especificando o índice inicial: $days = array(1 => "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"); // 2 é Tue, 3 é Wed, etc. •Se utilizarmos um índice inicial não numérico: $whoops = array('Fri' => "Black", "Brown", "Green"); // o mesmo que $whoops = array('Fri' => "Black", 0 => "Brown", 1 => "Green");
  • 14. Adicionando Valores no Final do Array •Para adicionar valores no final de um array existente, utilize a sintaxe []: $family = array("Fred", "Wilma"); $family[] = "Pebbles"; // $family[2] é "Pebbles" •Esquecendo de incluir a chave: $person = array('name' => "Fred"); $person[] = "Wilma"; // $person[0] é "Wilma"
  • 15. Atribuindo uma Faixa de Valores •A função range() cria um array de valores inteiros ou caracteres consecutivos, entre e incluindo os dois valores passados como seus argumentos •Exemplo: $numbers = range(2, 5); // $numbers = array(2, 3, 4, 5); $letters = range('a', 'z'); // $letters contém as letras do alfabeto $reversedNumbers = range(5, 2); // $reversedNumbers = array(5, 4, 3, 2); •Apenas a primeira letra de um argumento string é usado para construir a faixa: range("aaa", "zzz"); // o mesmo que range('a','z')
  • 16. Descobrindo o Tamanho de um Array •As funções count() e sizeof() são idênticas em uso e efeito •Elas retornam o número de elementos de um array $family = array("Fred", "Wilma", "Pebbles"); $size = count($family); // $size é 3 •Estas funções contam apenas os valores atribuídos: $confusion = array( 10 => "ten", 11 => "eleven", 12 => "twelve"); $size = count($confusion); // $size é 3
  • 17. Preenchendo um Array •Para criar um array com valores inicializados com o mesmo conteúdo, utilizamos array_pad() –O primeiro argumento é o array –O segundo, o número mínimo de elementos que o array deve ter –E o terceiro, o valor atribuído a qualquer dos elementos criados •A função retornará um novo array preenchido, não afetando o seu argumento $scores = array(5, 10); $padded = array_pad($scores, 5, 0); // $padded é array(5, 10, 0, 0, 0) •Se quisermos os novos elementos no início do array: $padded = array_pad($scores, −5, 0); // $padded é array(0, 0, 0, 5, 10);
  • 19. Arrays Multidimensionais •Os valores de um array podem ser arrays, permitindo facilmente a criação de arrays multidimensionais: $row0 = array(1, 2, 3); $row1 = array(4, 5, 6); $row2 = array(7, 8, 9); $multi = array($row0, $row1, $row2); •Podemos nos referir a elementos de arrays multidimensionais adicionando mais []s: $value = $multi[2][0]; // row 2, column 0. $value = 7 •Interpolando: echo("The value at row 2, column 0 is " . "{$multi[2][0]}n");
  • 21. Extraindo Múltiplos Valores •Utilize o construtor list() para copiar todos os valores de um array em variáveis: list ($variable, ...) = $array; •Exemplo: $person = array("Fred", 35, "Betty"); list($name, $age, $wife) = $person; // $name é "Fred", $age é 35, $wife é "Betty" •Se possuirmos mais valores que variáveis, os valores extras serão ignorados: $person = array("Fred", 35, "Betty"); list($name, $age) = $person; // $name é "Fred", $age é 35
  • 22. Extraindo Múltiplos Valores •Se possuirmos mais variáveis que valores, as variáveis extras receberão o valor NULL $values = array("hello", "world"); list($a, $b, $c) = $values; // $a é "hello", $b é "world", $c é NULL •Utilize vírgulas para “saltar” valores na lista: $values = range('a', 'e'); // use range para preencher o array list($m, , $n, , $o) = $values; // $m é "a", $n é "c", $o é "e"
  • 23. Dividindo um Array •Para extrair apenas um subconjunto do array, utilize a função array_slice(): $subset = array_slice(array, offset, length); •Retorna um novo array consistindo de uma série consecutiva de valores do array original: –O parâmetro offset indica o elemento inicial –E o parâmetro length indica a quantidade de valores a copiar •Exemplo: $people = array("Tom", "Dick", "Harriet", "Brenda", "Jo"); $middle = array_slice($people, 2, 2); // $middle é array("Harriet", "Brenda")
  • 24. Dividindo um Array •Em arrays associativos: // este uso de array_slice() não faz sentido $person = array('name' => "Fred", 'age' => 35, 'wife' => "Betty"); $subset = array_slice($person, 1, 2); // $subset é array(0 => 35, 1 => "Betty") •Extraindo apenas alguns valores para variáveis: $order = array("Tom", "Dick", "Harriet", "Brenda", "Jo"); list($second, $third) = array_slice($order, 1, 2); // $second é "Dick", $third é "Harriet"
  • 25. Dividindo um Array em Partes •Para dividir um array em partes menores, do mesmo tamanho, utilize a função array_chunk(): $chunks = array_chunk(array, size [, preserve_keys]); •A função retorna um array de arrays menores •O terceiro argumento, preserve_keys, é um booleano que determina se os elementos dos novos arrays devem possuir as mesmas chaves do original (útil para arrays associativos) ou em novas chaves numéricas a partir de 0 (útil para arrays indexados) –O padrão é atribuir novas chaves
  • 26. Dividindo um Array em Partes •Para dividir um array em partes menores, do mesmo tamanho, utilize a função array_chunk(): $chunks = array_chunk(array, size [, preserve_keys]); •A função retorna um array de arrays menores •O terceiro argumento, preserve_keys, é um booleano que determina se os elementos dos novos arrays devem possuir as mesmas chaves do original (útil para arrays associativos) ou em novas chaves numéricas a partir de 0 (útil para arrays indexados) –O padrão é atribuir novas chaves $nums = range(1, 7); $rows = array_chunk($nums, 3); print_r($rows); Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [2] => Array ( [0] => 7 ) )
  • 27. Chaves e Valores •A função array_keys() retorna um array consistindo apenas das chaves do array na ordem interna: $arrayOfKeys = array_keys(array); •Exemplo: $person = array('name' => "Fred", 'age' => 35, 'wife' => "Wilma"); $keys = array_keys($person); // $keys é array("name", "age", "wife") •A função array_values() retorna um array apenas com os valores do array: $arrayOfValues = array_values(array); •Exemplo: $values = array_values($person); // $values é array("Fred", 35, "Wilma");
  • 28. Verificando a Existência de um Elemento •Para verificar a existência de um elemento no array, utilize a função array_key_exists(): if (array_key_exists(key, array)) { ... } •A função retorna um booleano indicando se o primeiro argumento é uma chave válida no array dado como segundo argumento $person['age'] = 0; if ($person['age']) { echo "true!n"; } if (array_key_exists('age', $person)) { echo "exists!n"; } exists!
  • 29. Verificando a Existência de um Elemento •Mesmo que exista um elemento no array com o nome de chave dado, o seu valor correspondente pode ser falso (0, NULL, ou uma string vazia) •Por isso, muitos preferem utilizar isset() em vez de array_key_exists(): $a = array(0, NULL, ''); function tf($v) { return $v ? 'T' : 'F'; } for ($i=0; $i < 4; $i++) { printf("%d: %s %sn", $i, tf(isset($a[$i])), tf(array_key_exists($i, $a))); } 0: T T 1: F T 2: T T 3: F F
  • 30. Removendo e Inserindo Elementos em um Array •A função array_splice() pode remover ou inserir elementos em um array e opcionalmente criar um outro array a partir dos elementos removidos: $removed = array_splice(array, start [, length [, replacement ] ]); •Considerando o array: $subjects = array("physics", "chem", "math", "bio", "cs", "drama", "classics"); •Podemos remover os elementos “math”, “bio” e “cs”: $removed = array_splice($subjects, 2, 3); // $removed é array("math", "bio", "cs") // $subjects é array("physics", "chem", "drama", // "classics")
  • 31. Removendo e Inserindo Elementos em um Array •Se omitirmos o tamanho, array_splice() remove até o final do array: $removed = array_splice($subjects, 2); // $removed é array("math", "bio", "cs", // "drama", "classics") // $subjects é array("physics", "chem") •Para inserir elementos onde outros foram removidos, utilizamos o quarto argumento –A quantidade de elementos inseridos não tem que ser a mesma que a de elementos removidos $new = array("law", "business", "IS"); array_splice($subjects, 3, 4, $new); // $subjects é array("physics", "chem", // "math", "law", "business", "IS")
  • 32. Removendo e Inserindo Elementos em um Array •Para inserir elementos no array, “empurrando” elementos existentes para a direita, não remova nenhum elemento: $subjects = array("physics", "chem", "math"); $new = array("law", "business"); array_splice($subjects, 2, 0, $new); // $subjects é array("physics", "chem", "law", // "business", "math") •array_splice() também funciona em arrays associativos:
  • 33. Removendo e Inserindo Elementos em um Array •Para inserir elementos no array, “empurrando” elementos existentes para a direita, não remova nenhum elemento: $subjects = array("physics", "chem", "math"); $new = array("law", "business"); array_splice($subjects, 2, 0, $new); // $subjects é array("physics", "chem", "law", // "business", "math") •array_splice() também funciona em arrays associativos: $capitals = array( 'USA' => "Washington", 'Great Britain' => "London", 'New Zealand' => "Wellington", 'Australia' => "Canberra", 'Italy' => "Rome", 'Canada' => "Ottawa" ); $downUnder = array_splice($capitals, 2, 2); // remove New Zealand e Australia $france = array('France' => "Paris"); array_splice($capitals, 1, 0, $france); // insere France entre USA and GB
  • 34. ARRAYS Conversão entre Arrays e Variáveis
  • 35. Conversão entre Arrays e Variáveis •As funções extract() e compact() realizam a conversão entre arrays e variáveis •Os nomes das variáveis correspondem às chaves do array e os valores das variáveis correspondem aos valores no array •Por exemplo, este array: $person = array('name' => "Fred", 'age' => 35, 'wife' => "Betty"); •Pode ser convertido em e a partir destas variáveis: $name = "Fred"; $age = 35; $wife = "Betty";
  • 36. Criando Variáveis a Partir de um Array •Utilize a função extract(): extract($person); // $name, $age, and $wife are now set •Podemos modificar a função extract() passando um segundo argumento •O mais útil é EXTR_PREFIX_ALL: $shape = "round"; $array = array('cover' => "bird", 'shape' => "rectangular"); extract($array, EXTR_PREFIX_ALL, "book"); echo "Cover: {$book_cover}, " . "Book Shape: {$book_shape}, Shape: {$shape}"; Cover: bird, Book Shape: rectangular, Shape: round
  • 37. Criando um Array a Partir de Variáveis •A função compact() é o inverso de extract() – passamos nomes de variáveis como parâmetros separados ou em um array e a função cria um array associativo cujas chaves são os nomes das variáveis e os valores os conteúdos das mesmas –Qualquer nome que não corresponda a uma variável existente é ignorado •Exemplo: $color = "indigo"; $shape = "curvy"; $floppy = "none"; $a = compact("color", "shape", "floppy"); // ou $names = array("color", "shape", "floppy"); $a = compact($names);
  • 39. Percorrendo Arrays •A tarefa mais comum com arrays é fazer alguma coisa com todos os seus elementos –Por exemplo, enviar um e-mail para cada um dos elementos de um array de endereços, atualizar arquivos em um array de nomes de arquivos ou modificar valores em um array de preços
  • 40. Contrutor foreach •A forma mais comum de se criar um laço sobre elementos de um array: $addresses = array("spam@cyberpromo.net", "abuse@example.com"); foreach ($addresses as $value) { echo "Processing {$value}n"; } Processing spam@cyberpromo.net Processing abuse@example.com •Os elementos são processados em sua ordem interna •foreach faz uma cópia do array para processá-lo
  • 41. Contrutor foreach •Uma forma alternativa de foreach dá acesso a arrays associativos: $person = array('name' => "Fred", 'age' => 35, 'wife' => "Wilma"); foreach ($person as $key => $value) { echo "Fred's {$key} is {$value}n"; } Fred's name is Fred Fred's age is 35 Fred's wife is Wilma
  • 42. Funções do Apontador •Todo array PHP mantém a indicação para elemento que estamos trabalhando atualmente •PHP possui funções para atribuir, mover e reiniciar este apontador: –current() – retorna o elemento atualmente apontado –reset() – move o apontador para o primeiro elemento do array e o retorna –next() – move o apontador para o próximo elemento do array e o retorna –prev() – move o apontador para o elemento anterior do array e o retorna –end() – move o apontador para o último elemento do array e o retorna –key() – retorna a chave do elemento atual
  • 43. Funções do Apontador •A função each() é usada para percorrer os elementos de um array –Ela processa os elementos de acordo com a sua ordem interna –Esta abordagem não faz uma cópia do array como em foreach –É útil para arrays muito grandes quando quisermos conservar a memória reset($addresses); while (list($key, $value) = each($addresses)) { echo "{$key} is {$value}<br />n"; } 0 is spam@cyberpromo.net 1 is abuse@example.com
  • 44. Funções do Apontador $ages = array( 'Person' => "Age", 'Fred' => 35, 'Barney' => 30, 'Tigger' => 8, 'Pooh' => 40 ); // inicia tabela e imprime cabeçalho reset($ages); list($c1, $c2) = each($ages); echo("<table>n<tr><th>{$c1}</th><th>{$c2}</th></tr>n"); // imprime o restante dos valores while (list($c1, $c2) = each($ages)) { echo("<tr><td>{$c1}</td><td>{$c2}</td></tr>n"); } // fim da tabela echo("</table>");
  • 45. Utilizando for •Se estivermos trabalhando com arrays indexados, onde as chaves são inteiros consecutivos, iniciando por zero, podemos utilizar um laço for para contar através dos índices $addresses = array("spam@cyberpromo.net", "abuse@example.com"); $addressCount = count($addresses); for ($i = 0; $i < $addressCount; $i++) { $value = $addresses[$i]; echo "{$value}n"; } spam@cyberpromo.net abuse@example.com
  • 46. Chamando uma Função para Cada Elemento do Array •A função array_walk() chama uma função definida pelo usuário uma vez para cada elemento do array: array_walk(array, callable); •A função deverá possuir dois ou três argumentos: –O primeiro é o valor do elemento –O segundo é a chave do elemento –E o terceiro (opcional) é um valor fornecido para array_walk() quando ela é chamada $callback = function printRow($value, $key){ print("<tr><td>{$value}</td><td>" . "{$key}</td></tr>n"); }; $person = array('name' => "Fred", 'age' => 35, 'wife' => "Wilma"); array_walk($person, $callback);
  • 47. Chamando uma Função para Cada Elemento do Array •Uma variação do exemplo anterior especifica a cor de fundo usando o terceiro argumento opcional: function printRow($value, $key, $color) { echo "<tr>n<td bgcolor="{$color}">" . "{$value}</td>"; echo "<td bgcolor="{$color}">" . "{$key}</td>n</tr>n"); } $person = array('name' => "Fred", 'age' => 35, 'wife' => "Wilma"); echo "<table border="1">"; array_walk($person, "printRow", "lightblue"); echo "</table>";
  • 48. Chamando uma Função para Cada Elemento do Array •Se tivermos múltiplos valores para passar à função chamada, utilize um array como terceiro parâmetro: $extraData = array('border' => 2, 'color' => "red"); $baseArray = array("Ford", "Chrysler", "Volkswagen", "Honda", "Toyota"); array_walk($baseArray, "walkFunction", $extraData); function walkFunction($item, $index, $data) { echo "{$item} <- item, then border: " . "{$data['border']}"; echo " color->{$data['color']}<br />" ; } Ford <- item, then border: 2 color->red Crysler <- item, then border: 2 color->red VW <- item, then border: 2 color->red Honda <- item, then border: 2 color->red Toyota <- item, then border: 2 color->red
  • 49. Computando um Array •Um “primo” de array_walk() é a função array_reduce(), que aplica uma função a cada um dos elementos de um array, de modo a retornar um único valor: $result = array_reduce(array, callable [, default ]); •A função deve receber dois argumentos: o total da execução e o valor atual sendo processado, devendo retornar um novo total •Por exemplo, somar os quadrados dos valores de um array:
  • 50. Computando um Array •Um “primo” de array_walk() é a função array_reduce(), que aplica uma função a cada um dos elementos de um array, de modo a retornar um único valor: $result = array_reduce(array, callable [, default ]); •A função deve receber dois argumentos: o total da execução e o valor atual sendo processado, devendo retornar um novo total •Por exemplo, somar os quadrados dos valores de um array: $callback = function addItUp($runningTotal, $currentValue) { $runningTotal += $currentValue * $currentValue; return $runningTotal; }; $numbers = array(2, 3, 5, 7); $total = array_reduce($numbers, $callback); echo $total; 87
  • 51. Computando um Array •A linha do array_reduce() faz as seguintes chamadas de função: addItUp(0, 2); addItUp(4, 3); addItUp(13, 5); addItUp(38, 7); •O argumento default, opcional, se fornecido, é um valor inicial •Por exemplo, se fizermos uma mudança na chamada do exemplo anterior: $total = array_reduce($numbers, "addItUp", 11); •As chamadas de função resultantes seriam: addItUp(11, 2); addItUp(15, 3); addItUp(24, 5); addItUp(49, 7);
  • 52. Buscando Valores •A função in_array() retorna true ou false, dependendo do seu primeiro argumento ser um elementos do array dado como segundo argumento: if (in_array(to_find, array [, strict])) { ... } •Se o valor do terceiro argumento opcional é true, os tipos de to_find e o valor no array devem combinar –O padrão é não checar tipos de dados •Exemplo: $addresses = array("spam@cyberpromo.net", "abuse@example.com", "root@example.com"); $gotSpam = in_array("spam@cyberpromo.net", $addresses); // $gotSpam é true $gotMilk = in_array("milk@tucows.com", $addresses); // $gotMilk é false
  • 53. Buscando Valores •PHP automaticamente indexa valores em arrays, portanto in_array() é geralmente muito mais rápida do que percorrer o array com um laço •Verificando se o usuário entrou com a informação em todos os campos obrigatórios em um formulário:
  • 54. Buscando Valores <?php function hasRequired($array, $requiredFields) { $keys = array_keys($array); foreach ($requiredFields as $fieldName) { if (!in_array($fieldName, $keys)) { return false; } if(!$array[$fieldName]) { return false; } } return true; } if ($_POST['submitted']) { echo "<p>You "; echo hasRequired($_POST, array('name', 'email_address')) ? "did" : "did not"; echo " have all the required fields.</p>"; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <p>Name: <input type="text" name="name" /><br /> Email address: <input type="text" name="email_address" /><br /> Age (optional): <input type="text" name="age" /></p> <p align="center"><input type="submit" value="submit" name="submitted" /></p> </form>
  • 55. Buscando Valores •Uma variação de in_array() é a função array_search(), que retorna a chave do elemento, se encontrado –Também recebe o terceiro argumento opcional strict •Exemplo: $person = array('name' => "Fred", 'age' => 35, 'wife' => "Wilma"); $k = array_search("Wilma", $person); echo("Fred's {$k} is Wilman"); Fred's wife is Wilma
  • 57. Ordenação de Arrays •Modifica a ordem interna dos elementos de um array e opcionalmente reescreve as chaves para refletir a nova ordem •PHP fornece três maneiras de ordenar um array –Ordenação pelas chaves –Ordenação pelos valores, sem mudar as chaves –Ordenação por valores, modificando as chaves •Todas as três formas podem ser feitas em ordem ascendente, descendente, ou na ordem determinada por uma função definida pelo usuário
  • 58. Ordenação de Arrays •Funções fornecidas por PHP para ordenação de arrays: •As funções sort(), rsort() e usort() são projetadas para trabalhar com arrays indexados •Exemplo: $names = array("Cath", "Angela", "Brad", "Mira"); sort($names); // $names é "Angela", "Brad", "Cath", "Mira" Efeito Ascendente Descendente Odem definida pelo usuário Ordena arrays pelos valores, reatribuindo índices, iniciando com 0 sort rsort() usort() Ordena arrays pelos valores asort() arsort() uasort() Ordena arrays pelas chaves ksort() krsort() uksort()
  • 59. Exemplo •Mapeando usuários e tempo de login, mostrando os três primeiros:
  • 60. Exemplo $logins = array( 'njt' => 415, 'kt' => 492, 'rl' => 652, 'jht' => 441, 'jj' => 441, 'wt' => 402, 'hut' => 309, ); arsort($logins); $numPrinted = 0; echo "<table>n"; foreach ($logins as $user => $time) { echo("<tr><td>{$user}</td><td>{$time}</td></tr>n"); if (++$numPrinted == 3) { break; // pára após três } } echo "</table>";
  • 61. Ordenação de Arrays •Ordenação definida pelo usuário requer que forneçamos uma função que recebe dois valores e retorna um valor que especifica a ordem dos dois valores no array a ser ordenado: –1, se o primeiro valor é maior que o segundo –-1, se o primeiro valor é menor que o segundo –0, se os valores são iguais
  • 62. Ordem Natural •As funções internas de PHP ordenam corretamente strings e números, mas não strings que contenham números –Por exemplo, ex10.php, ex5.php, e ex1.php, em funções de ordenação normal ficariam ex1.php, ex10.php, ex5.php •Para ordenar corretamente strings que contenham números, utilize as funções natsort() e natcasesort()
  • 63. Ordenando Múltiplos Arrays •A função array_multisort() ordena múltiplos arrays indexados de uma só vez: array_multisort(array1 [, array2, ... ]); •A função preservará a relação dos elementos dos arrays, mantendo os registros •No exemplo a seguir os elementos serão ordenados inicialmente pela idade (ascendente), então pelo código de área (descendente):
  • 64. Ordenando Múltiplos Arrays •A função array_multisort() ordena múltiplos arrays indexados de uma só vez: array_multisort(array1 [, array2, ... ]); •A função preservará a relação dos elementos dos arrays, mantendo os registros •No exemplo a seguir os elementos serão ordenados inicialmente pela idade (ascendente), então pelo código de área (descendente): $names = array("Tom", "Dick", "Harriet", "Brenda", "Joe"); $ages = array(25, 35, 29, 35, 35); $zips = array(80522, '02140', 90210, 64141, 80522); array_multisort($ages, SORT_ASC, $zips, SORT_DESC, $names, SORT_ASC); for ($i = 0; $i < count($names); $i++) { echo "{$names[$i]}, {$ages[$i]}, {$zips[$i]}n"; } Tom, 25, 80522 Harriet, 29, 90210 Joe, 35, 80522 Brenda, 35, 64141 Dick, 35, 02140
  • 65. Invertendo Arrays •A função array_reverse() inverte a ordem interna dos elementos de um array $reversed = array_reverse(array); •Chaves numéricas são renumeradas iniciando por 0, strings não são afetadas •A função array_flip() retorna um array que inverte a ordem dos pares chave-valor: $flipped = array_flip(array); •Por exemplo, se você tem um array mapeando nomes de usuários para pastas, podemos usar array_flip() para criar um array mapeando pastas para nomes de usuários:
  • 66. Invertendo Arrays •A função array_reverse() inverte a ordem interna dos elementos de um array $reversed = array_reverse(array); •Chaves numéricas são renumeradas iniciando por 0, strings não são afetadas •A função array_flip() retorna um array que inverte a ordem dos pares chave-valor: $flipped = array_flip(array); •Por exemplo, se você tem um array mapeando nomes de usuários para pastas, podemos usar array_flip() para criar um array mapeando pastas para nomes de usuários: $u2h = array( 'gnat' => "/home/staff/nathan", 'frank' => "/home/action/frank", 'petermac' => "/home/staff/petermac", 'ktatroe' => "/home/staff/kevin" ); $h2u = array_flip($u2h); $user = $h2u["/home/staff/kevin"]; // $user é 'ktatroe'
  • 67. Ordenação Aleatória •Para colocar os elementos de um array em ordem aleatória, utilizamos a função shuffle() •Ela substituirá todas as chaves existentes, string ou numérica, por inteiros consecutivos iniciando por 0 •Exemplo: $weekdays = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday"); shuffle($weekdays); print_r($weekdays); Array( [0] => Tuesday [1] => Thursday [2] => Monday [3] => Friday [4] => Wednesday )
  • 68. ARRAYS Operação em Arrays Completos
  • 69. Operação em Arrays Completos •PHP possui várias funções para modificação ou para aplicar uma operação em todos os elementos de um array •Podemos unir arrays, encontrar diferença, calcular total, etc.
  • 70. Calculando a Soma de um Array •A função array_sum() adiciona os valores em um array indexado ou associativo: $sum = array_sum(array); •Exemplo: $scores = array(98, 76, 56, 80); $total = array_sum($scores); // $total = 310
  • 71. Unindo Dois Arrays •A função array_merge() inteligentemente une dois arrays: $merged = array_merge(array1, array2 [, array ... ]) •Exemplo: $first = array("hello", "world"); // 0 => "hello", 1 => "world" $second = array("exit", "here"); // 0 => "exit", 1 => "here" $merged = array_merge($first, $second); // $merged = array("hello", "world", "exit", "here") •Se uma chave de um array anterior é repetida, o seu valor é substituído pelo valor no último array: $first = array('bill' => "clinton", 'tony' => "danza"); $second = array('bill' => "gates", 'adam' => "west"); $merged = array_merge($first, $second); // $merged = array('bill' => "gates", // 'tony' => "danza", 'adam' => "west")
  • 72. Diferença Entre Arrays •A função array_diff() calcula a diferença entre dois arrays, isto é, os valores do primeiro array que não estão presentes no segundo –Identifica elementos de um array que não estão em outros $diff = array_diff(array1, array2 [, array ... ]); •Exemplo: $a1 = array("bill", "claire", "ella", "simon", "judy"); $a2 = array("jack", "claire", "toni"); $a3 = array("ella", "simon", "garfunkel"); // encontrar valores de $a1 que não estão em $a2 ou $a3 $difference = array_diff($a1, $a2, $a3); print_r($difference); Array( [0] => "bill", [4] => "judy" );
  • 73. Diferença Entre Arrays •Valores são comparados utilizando-se o comparador de comparação estrita ===, assim os valores 1 e “1” são considerados diferentes •As chaves do primeiro array são preservadas
  • 74. Filtrando Elementos •Para identificar um subconjunto de um array baseado em seus valores, utilizamos a função array_filter(): $filtered = array_filter(array, callback); •Para cada valor do array é passada a função chamada de callback –O array retornado contém aqueles elementos do array original cuja função retorna um valor true –As chaves são preservadas •Exemplo: $callback = function isOdd ($element) { return $element % 2; }; $numbers = array(9, 23, 24, 27); $odds = array_filter($numbers, $callback); // $odds é array(0 => 9, 1 => 23, 3 => 27)
  • 76. Conjuntos •Arrays permitem a implementação das operações básicas da teoria dos conjuntos: união, interseção e diferença •A união de dois arrays pode ser calculada pelas funções array_merge() e array_unique():
  • 77. Conjuntos •Arrays permitem a implementação das operações básicas da teoria dos conjuntos: união, interseção e diferença •A união de dois arrays pode ser calculada pelas funções array_merge() e array_unique(): function arrayUnion($a, $b) { $union = array_merge($a, $b); // duplicatas ainda podem existir $union = array_unique($union); return $union; } $first = array(1, "two", 3); $second = array("two", "three", "four"); $union = arrayUnion($first, $second); print_r($union); Array( [0] => 1 [1] => two [2] => 3 [4] => three [5] => four )
  • 78. Conjuntos •Interseção é o conjunto de elementos que os arrays possuem em comum •A função array_intersect() recebe qualquer número de arrays como argumentos e retorna um array com os elementos comuns a todos •Se várias chaves possuírem o mesmo valor, a primeira chave com o valor será preservada
  • 79. Curso de PHP – Arrays Fábio M. Pereira UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA – UESB UNIDADE ORGANIZACIONAL DE INFORMÁTICA - UINFOR