Programação para a Internet II 2.6. PHP – Arrays Nuno Miguel Gil Fonseca [email protected] PHP – Hypertext Preprocessor Arrays Em PHP um array é uma variável como as outras, no entanto, tem a propriedade de poder conter outras variáveis Cada variável contida dentro de um array é designada por “elemento”. Cada “elemento” é constituído por uma chave e por um valor. No caso mais simples, os arrays em PHP comportam-se de forma semelhante às restantes linguagens… a forma de aceder aos valores é através do índice da posição. (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 2 PHP – Hypertext Preprocessor Arrays Exemplos <?php $fruta = array("Maças", "Peras", "Bananas"); $fruta[1] = "Pêras"; print($fruta[1]); ?> <?php $fruta[0] $fruta[1] $fruta[2] $fruta[1] = = = = "Maças"; "Peras"; "Bananas"; "Pêras"; print($fruta[1]); ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 3 PHP – Hypertext Preprocessor Arrays Arrays associativos O que difere estes arrays dos restantes é o facto de se poder aceder aos valores através de um nome (a chave)… <?php $fruta = array("a"=>"Macas", "b"=>"Laranjas", "c"=>"Bananas"); $fruta["a"] = "Maças"; print($fruta["a"]); ?> <?php $fruta["a"] = "Maças"; $fruta["b"] = "Laranjas"; $fruta["c"] = "Bananas"; print($fruta["a"]); ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 4 PHP – Hypertext Preprocessor Arrays (cont.) As formas de iterar num array <?php $tamanho = count($array); for ($i = 0; $i < $tamanho; $i++){ print($array[$i]); } ?> <?php while (list($key, $val) = each($array)) { print("$key is $val\n"); } ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 5 PHP – Hypertext Preprocessor Arrays (cont.) As formas de iterar num array <?php foreach($array as $val) { print($val); } ?> <?php foreach ($array as $key => $val) { print("$key = $val\n"); } ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 6 PHP – Hypertext Preprocessor Arrays (cont.) Adicionar elementos ao array <?php $array1 = array("Fee"); $array1[] = "Foo"; $array1[] = "Bar"; $array1[] = "Baz"; var_dump($array1); ?> <?php $array1 = array("x" => "Fee"); $array1["a"] = "Foo"; $array1["b"] = "Bar"; $array1["c"] = "Baz"; print_r($array1); ?> Nota: var_dump e print_r – Mostram o conteúdo de uma variável (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 7 PHP – Hypertext Preprocessor Arrays (cont.) Remover elementos do array <?php $array1 = array("Fee"); $array1[] = "Foo"; $array1[] = "Bar"; $array1[] = "Baz"; unset($array1[1]); var_dump($array1); ?> <?php $array1 = array("x" => "Fee"); $array1["a"] = "Foo"; $array1["b"] = "Bar"; $array1["c"] = "Baz"; unset($array1["c"]); print_r($array1); ?> Nota: var_dump e print_r – Mostram o conteúdo de uma variável (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 8 PHP – Hypertext Preprocessor Arrays (cont.) Funções de manipulação de arrays Devolver o número de elementos de um array <?php print(count($array)); ?> Eliminar elementos repetidos <?php $o_meu_array = array("AA", "BB", "CC", "BB"); $o_meu_array = array_unique($o_meu_array); ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 9 PHP – Hypertext Preprocessor Arrays (cont.) Funções de manipulação de arrays (cont.) Fazer o merge de arrays <?php $array1 = array("a", "b"); $array2 = array("c"); " " $array3 = array_merge($array1, $array2); ?> Intersecção de dois arrays <?php $array1 = array("a", "b"); $array2 = array("a"); $array3 = array_intersect($array1, $array2); ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 10 PHP – Hypertext Preprocessor Arrays (cont.) Funções de manipulação de arrays (cont.) Diferença entre arrays <?php $array1 = array("a", "b"); $array2 = array("b"); $array3 = array_diff($array1, $array2); ?> Verificar se um elemento existe no array <?php $agulha = "aa"; $palheiro = array("aa", "bb"); $encontrou = (in_array($agulha, $palheiro)) ? "sim" : "não"; print($encontrou); ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 11 PHP – Hypertext Preprocessor Arrays (cont.) Funções de manipulação de arrays (cont.) Ordenação de elementos de um array <?php $array1 = array("c", "a", "b"); sort($array1); ?> Ver o conteúdo de um array <?php $array1 = array("c", "a", "b"); print_r($array1); ?> Array ( [0] => "c" [1] => "a" [2] => "b" ) (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 12 PHP – Hypertext Preprocessor Arrays (cont.) Como obter lista das “chaves” de um array? <?php //$keys é um array indexado numericamente $keys = array_keys($frutas); ?> Arrays bidimensionais <?php $arrayb = array ( "frutas" => array("a"=>"laranja", "b"=>"banana", "c"=>"maçã"), "numeros" => array(1, 2, 3, 4, 5, 6), "buracos" => array("primeiro", 5 => "segundo", "terceiro") ); print $arrayb["frutas"]["a"]; print $arrayb["numeros"][0]; ?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 13 PHP – Hypertext Preprocessor Arrays (cont.) Indexação automática de arrays <?php $array = array(1, 1, 1, 1, ?> 1, 8 => 1, Array ( [0] [1] [2] [3] [4] [8] [9] ) => => => => => => => 4 => 1, 19, 3 => 13); 1 1 1 13 1 1 19 (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 14 PHP – Hypertext Preprocessor Arrays (cont.) Lista completa de funções de manipulação de arrays http://pt.php.net/array (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 15