PHP Aula 3 Strings, Funções e Arrays FUNÇÕES Professor: Leonardo Pereira E-mail: [email protected] Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si INTRODUÇÃO CRIAÇÃO Uma função é um pedaço de código com um objetivo especifico, encapsulado sob uma estrutura única que recebe um conjunto de parâmetros e retorna um dado. Uma função é declarada uma única vez, mas pode ser utilizada diversas vezes. É uma das estruturas mais básicas para prover reuso. Usamos o operador function seguido de um nome qualquer que será o identificador da mesma. Este nome obrigatoriamente deve iniciar com uma letra. Na mesma linha, digitamos a lista de argumentos que a função irá receber, separados por vírgula. Em seguida, encapsulado por chaves {}, vem o código da função. No final, utiliza-se a clausula return para retornar o resultado da função. EXEMPLO VARIÁVEIS GLOBAIS <?php function somar($v1, $v2, $v3) { $total = $v1 + $v2 + $v3; return $total. } ?> A função acima recebe 3 parâmetros e retorna um valor definido pela soma das 3 variáveis. Todas as variáveis declaradas dentro do escopo de uma função são locais. Para acessar uma variável externa ao contexto de uma função sem passá-la como parâmetro, é necessário declará-la como global. Uma variável global é acessada a partir de qualquer ponto da aplicação. EXEMPLO VARIÁVEIS ESTÁTICAS <?php $p = 30; function porcentagem($numero){ global $p; return ($numero*$p)/100; } ?> Essa função retorna 30% do valor passado como argumento. Dentro do escopo de uma função podemos armazenar variáveis de forma estática. Assim, elas mantêm o valor que lhes foi atribuído na ultima execução. Para isso usamos o operador static. EXEMPLO PASSAGEM DE PARÂMETROS <?php function percorre($km){ static $total; $total += $km; echo “Percorreu mais $km do total de $total”; } percorre(100); // Percorreu mais 100 do total de 100 percorre(20); // Percorreu mais 20 do total de 120 Existem dois tipos de passagem de parâmetros: por valor por referência Por padrão, os valores são passados por valor. ?> PASSAGEM POR VALOR PASSAGEM POR REFERÊNCIA <?php <?php function incrementa($variavel, $valor){ $variavel += $valor) } $a = 10; incrementa ($a, 20); echo $a; // 10 ?> O parâmetro que a função recebe é tratado como variável local dentro do contexto da função, não alterando o seu valor externo. function incrementa(&$variavel, $valor){ $variavel += $valor; } $a = 10; incrementa ($a, 20); echo $a; // 30 ?> Para realizar a passagem de parâmetros por referencia, usamos o operador & na frente do parâmetro, fazendo com que as transformações realizadas pelo função sobre a variável sejam repassada a variável externa também. VALORES PADRÃO RECURSÃO O PHP permite definir valores default para parâmetros. <?php function incrementa(&$variavel, $valor = 40){ $variavel += $valor; } $a = 10; incrementa ($a); echo $a; // 50 ?> Se o programador executar a função sem especificar o parâmetro, será assumido o valor 40. <?php function fatorial($numero){ if($numero == 1) return $numero; else return $numero * fatorial($numero – 1); } echo fatorial(3); // 6 echo fatorial (5); // 120 ?> O PHP permite chamada de funções de forma recursiva. Funções recursivas são aquelas que eu seu interior fazem chamadas a si mesmas. INTRODUÇÃO Uma string é uma cadeia de caracteres alfanuméricas. Para declarar uma string podemos utilizar aspas simples ou aspas duplas. $variavel = “Teste 1”; $variavel = ‘Teste 1’; STRINGS ASPAS SIMPLES E ASPAS DUPLAS STRING DE N LINHAS A diferença é que todo conteúdo contido dentro de aspas duplas é avaliado pelo PHP. Se a string contem uma variável, esta variável será traduzida pelo seu valor. <?php $fruta = “maça”; echo “Gosto de $fruta”; // Gosto de maça echo ‘Gosto de $fruta’; // Gosto de $fruta ?> CONCATENAÇÃO FUNÇÕES DE STRING Para unir strings podemos usar o operador ponto ou colocar múltiplas variáveis dentro de aspas duplas. <?php $bebida = “suco”; $lanche = “sanduiche”; echo “Eu gosto de $lanche e $bebida”; echo “Eu gosto de “.$lanche.” e ”.$bebida; ?> Também podemos declarar uma string com muitas linhas observando a sintaxe a seguir. <?php $texto = <<<CHAVE Estou me preparando para ser aprovado em um concurso CHAVE; echo $texto; ?> Devemos escolher uma palavra-chave para delimitar o inicio e o fim da string. Existem diversas funções do PHP que foram criadas para manipular strings. strtoupper: transforma uma string para maiúsculo. $nome = “Leonardo”; echo strtoupper($nome); // LEONARDO strtolower: transforma uma string para minúsculo. $texto = “AVISO”; echo strtolower($texto); // aviso FUNÇÕES DE STRING substr: retorna uma parte da string. Possui 3 argumentos que são: Uma string. Ponto de inicio da analise. Quantidade de caracteres. $time = “Botafogo”; echo substr($time, 1); // otafogo echo ($time, 0, 3); // Bot echo substr($time, 2, -1) // tafog echo substr($time, -2) // go Se a quantidade de caracteres for negativa, o PHP conta n caracteres antes do final da string. FUNÇÕES DE STRING str_repeat: repete uma string uma certa quantidade de vezes. 1 – entrada 2 - quantidade de repetições $txt = “Ola”; echo str_repeat($txt, 2) // OlaOla FUNÇÕES DE STRING FUNÇÕES DE STRING strlen: retorna o comprimento de uma string $texto = “Olá mundo”; echo strlen($texto) // 9 strpos: encontra a primeira ocorrência de uma string dentro de outra. $texto = “O gato é legal”; echo strpos($texto, “legal”); // 9 str_replace: substitui uma string por outra em um dado contexto. Possui 3 parâmetros. 1 – substituída 2 – substituta 3 - string $txt = “O gato é legal”; echo str_replace(“rato”, “leão”, $txt); // o leão é legal chop: remove caracteres no final de uma string. $txt = “Leonardo Pereira“; echo chop($txt, “Pereira”); // Leonardo ord: retorna o valor ASCII de um caractere. echo ord("h"); // 104 INTRODUÇÃO Os arrays em PHP são verdadeiros containers, servindo para armazenar números, strings, objetos, dentro outros, de forma dinâmica. Além disso, o PHP nos oferece uma gama enorme de funções para manipulá-los, as quais serão vistas a seguir. ARRAYS CRIANDO UM ARRAY ARRAYS ASSOCIATIVOS Arrays são acessados mediante uma posição, como um índice numérico. Para criar um array, pode-se usar a função array. $cores = array(“red”, “blue”, “yellow”); Outra forma de criar um array é simplesmente adicionando-lhe valores como abaixo; $nomes[] = “Leon”; $nomes[] = “Isabella”; Para acessar o array indexado basta indicar o seu índice entre colchetes. echo $nomes[1]; // Isabella O PHP permite a criação de arrays associativos. Neste tipo de array, temos uma chave de acesso para cada posição. $pessoa = array(“nome”=>”Leon”, “cidade”=>”RJ”); Outra forma de criar um array associativo é simplesmente adicionando-lhe valores com assim: $pessoa[‘nome’] = “Maria da Silva”; $pessoa[‘rua’] = “Pres. Vargas”; $pessoa[‘bairro’] = “Centro”; A chave pode ser uma string ou um inteiro não negativo. ITERAÇÕES ARRAYS MULTIDIMENSIONAIS <?php $nomes = array(“Leonardo”, “Bruno”, “Igor”); foreach($nomes as $chave => $valor){ echo $valor; ?> Um array multidimensional ou matriz é aquele em que em alguma posição existe um outro array. Também e criado com a função array(). <?php $carros = array(“Palio”=> array(“cor”=>”azul”, “potencia”=>”1.0”), “Corsa” => array(“cor”=>”preto”, “potencia”=>”1.8”) ); echo $carros [“Corsa”][“cor”]; // preto ?> FUNÇÕES DE ARRAY FUNÇÕES DE ARRAY array_push: adiciona elementos ao final de um array. array_pop: remove um valor do final de um array. array_shift: remove um elemento do inicio de um array. array_unshift: adiciona um elemento no inicio de um array. array_reverse: recebe um array e retorna-o na ordem inversa. array_merge: mescla dois ou mais arrays. array_keys: retorna as chaves de um array associativo. array_values: retorna um array contendo os valores de outro array associativo. count: retorna a quantidade de elementos de um array. array_slice: extrai uma porção de um array. FUNÇÕES DE ARRAY FUNÇÕES DE ARRAY sort: ordena um array pelo seu valor, não mantendo a associação de índices. rsort: ordena um array em ordem reversa pelo seu valor, não mantendo a associação de índices. asort: ordena um array associativo pelo seu valor, mantendo a associação de índices. arsort: ordena de forma reversa um array associativo pelo seu valor, mantendo a associação de índices. ksort: ordena um array pelos seus índices. krsort: ordena um array pelo seus índices de forma reversa. explode: converte uma string em um array, separando os elementos por meio de um separador. $data = “31/12/2004;” $s = explode(“/”, $data); implode: converte um array em uma string, separando os elementos do array por meio de um separador. $data = array(“31”,”12”,”2004”); $s = implode(“/”, $data); INTRODUÇÃO O PHP possui diversas funções matemáticas para facilitar o dia-a-dia do programador, sendo que as principais seguem abaixo: rand — gera um inteiro aleatório. abs — valor absoluto. ceil — arredonda frações para cima. floor — arredonda frações para baixo. FUNÇÕES MATEMÁTICAS INTRODUÇÃO round — Arredonda um número de 0 até 0.4 === 0. de 0.5 até 0.9 === 1. max — localiza o maior valor. min — localiza o menor valor. pow (numero, expoente) — potência. sqrt ( ) — raiz quadrada. EMAIL ENVIO DE EMAIL O PHP possui uma função que permite o envio de e- mails: chamada mail(). mail (destinatário , assunto , mensagem, headers) destinatário – receptor do email. assunto – frase referente ao teor do email. mensagem – corpo do email. headers – opcional. Usado para configurar outras opções no email como Bcc. SCRIPTS DA AULA EXEMPLO 1 :: FUNÇÕES EXEMPLO 2 :: VARIÁVEL GLOBAL <?php <?php function somar($a, $b){ return $a + $b; } echo somar(3,5); function imprimir(){ echo $nome; } ?> $nome = "Leonardo"; imprimir(); ?> EXEMPLO 3 :: PASSAGEM DE PARÂMETRO EXEMPLO 4 :: VARIÁVEL ESTÁTICA <?php <?php function incrementar1($d){ $d++; } function incrementar2(&$d){ $d++; } function percorre($km){ $total = 100; $total -= $km; echo "Faltam $total kms”; } $c = 10; incrementar1($c); echo $c; $c = 10; incrementar2($c); echo $c; ?> percorre(10); percorre(40); ?> EXEMPLO 5 :: VALOR PADRÃO EXEMPLO 6 :: RECURSIVIDADE <?php <?php function multiplicador($variavel, $x = 3){ return $variavel * $x; } $a = 10; echo multiplicador($a,10); function fatorial($n){ if($n == 1) return 1; else return $n * fatorial($n - 1); ?> } echo fatorial(4); ?> EXEMPLO 7 :: ESTILO HEREDOC EXEMPLO 8 :: FUNÇÕES STRINGS <?php $texto = <<<CHAVE Concurso Público <br> Aeronáutica <br> Brasil CHAVE; <?php $min = "brasil"; $max = "ARGENTINA"; echo strtoupper($min); echo strtolower($max); echo $texto; ?> ?> EXEMPLO 9 :: FUNÇÕES STRINGS EXEMPLO 10 :: FUNÇÕES STRINGS <?php <?php $nome = "Leonardo"; $nome = "Olá"; echo str_repeat($nome, 3); echo substr($nome, 1); echo substr($nome, 1, 4); echo substr($nome, -1); echo strlen($nome); ?> echo substr($nome, -3, 2); echo substr($nome, -3, -2); ?> EXEMPLO 11 :: FUNÇÕES STRINGS EXEMPLO 12 :: ARRAY <?php <?php ?> $frase = "O leão roeu a roupa do rei"; echo str_replace("leão", "rato",$frase); $cores = array("azul", "amarelo", "preto"); echo $cores[1]; echo strpos($frase, "roupa"); echo chop($frase, "rei"); $nomes[] = "Leonardo"; $nomes[] = "Isabella"; echo $nomes[0]; echo ord("M"); echo $nomes[1]; ?> EXEMPLO 13 :: ARRAY ASSOCIATIVO EXEMPLO 14 :: ARRAY MULTIDIMENSIONAL <?php <?php $carros = array( "amarelo" => "fox", "preto" => "siena", "branco" => "logan“ ); $carros = array( "Cruze" => array("cor"=>"preto", "potencia"=> "2.0"), "Camaro" => array("cor"=>"cinza", "potencia"=> "2.4") ); echo $carros ["Cruze"]["cor"]; echo $carros ["Camaro"]["potencia"]; echo $carros["preto"]; ?> ?> EXEMPLO 15 :: FUNÇÕES ARRAY EXEMPLO 16 :: FUNÇÕES ARRAY <?php <?php $letras = array("A", "B", "C", "D", "E"); $letras = array("a", "b"); $numeros = array(1, 2); $resultado = array_merge($letras, $numeros); echo "Insere no final"; array_push($letras, "F"); ?> echo "Remove do final”; array_pop($letras); echo count($resultado); echo "Remove do inicio”; array_shift($letras); $s1 = array_slice($resultado, 1); echo "Insere no inicio”; array_unshift($letras, "A"); $s2 = array_slice($resultado, -4 , 2); echo "Inverte os elementos”: $rletras = array_reverse($letras); foreach($rletras as $l) echo $l; $s3 = array_slice($resultado, 0 , 3); $s4 = array_slice($resultado, -2 , -2); ?> EXEMPLO 17 :: FUNÇÕES ARRAY EXEMPLO 18 :: ORDENANDO ARRAYS <?php <?php $assoc = array( "BR" => "Brasil", "CH" => "Chile", "FR" => "França", "JP" => "Japao"); $frutas = array( "Maça", "Pera", "Abacaxi", "Uva“ ); sort($frutas); foreach($frutas as $a) echo $a." "; $chaves = array_keys($assoc); foreach($chaves as $c) echo $c." "; $valores = array_values($assoc); foreach($valores as $v) echo $v." "; ?> rsort($frutas); foreach($frutas as $a) echo $a." "; ?> EXEMPLO 19 :: ORDENANDO ARRAYS EXEMPLO 20 :: EXPLODE E IMPLODE <?php <?php $paises = array( 4 => "Brasil", 2 => "Chile", 3 => "França", 1 => "Japao"); $data = "23/01/2014"; $partes = explode("/", $data); foreach ($partes as $p) echo $p." "; asort($paises); arsort($paises); $data = array("31","12","2004"); $s = implode("/", $data); echo $s; ksort($paises); krsort($paises); ?> ?> EXEMPLO 21 :: FUNÇÕES NUMÉRICAS EXEMPLO 21 :: FUNÇÕES NUMÉRICAS <?php <?php $n = 3.4; echo rand(); $n = 5.6; echo round($n); echo abs($n); echo max(10, 5); echo min(10, 5); echo ceil($n); echo pow(5, 2); echo floor($n); ?> echo sqrt(9); ?>