Creating Array within Function

1

I'm trying to do an exercise where I have to create a array inside a function, and the same be accessed through an external code (example: ... php? pais = uk and show UK - London ).

The array items are countries and capitals, eg Brazil - Brasilia, United Kingdom - uk - London, United States - us - Washington, etc.

Exercise Points:

  • receive a country code, search for it in array , and type the name of the country.
  • the search has to be done in a function.
  • the country code has to be passed the function as a parameter.
  • the function must indicate the country and the capital.

I previously did the exercise as follows (with switch ), but with array I'm not able to do it, it follows the code:

function paises($pais){
   switch($pais){
      case 'pt':
         $mensagem = "Portugal";       
         $mensagem2 = "Lisboa"; 
         break;

      case 'br':
         $mensagem = "Brasil";       
         $mensagem2 = "Brasilia"; 
         break;

      case 'it':
         $mensagem = "Italia";       
         $mensagem2 = "Roma"; 
         break;

      case 'uk':
         $mensagem = "Reino Unido";       
         $mensagem2 = "Londres"; 
         break;

      // ......

      default:
         echo "Nenhum país foi escolhido!";

   }         
}
    
asked by anonymous 27.07.2016 / 16:30

3 answers

1
  

This is an alternative based on Andrei Coelho solution. I believe it is more simplified.

<?php

    function pais($codigo){

        $pais = array(

        "default" => array(false, "Ocorreu um erro"),

        "pt" =>  array("Portugal", "Lisboa"),
        "br" => array("Brasil", "Brasília"),
        "it" => array("Italia", "Roma"),
        //...

        );

       return array_key_exists($codigo, $pais) ? $pais[$codigo] : $pais['default'];

    }

    // Para demonstração:
    // $_GET['pais'] = 'br';


    list($pais, $capital) = pais( $_GET['pais'] );

    // $pais será false se não houver o código!
    if($pais){


      echo $pais;
      echo '>'.$capital;

    }

?>

Your array will contain all the data. The isset() will check if there is any array whose index is equal to the value of the parameter. If the index br , in the case of this demonstration, it will return, if it will not return what is set in default .

    
27.07.2016 / 23:52
4

One of the ways to return a array as a result of the function is:

function paises($pais){
    $resultado = [];

    switch($pais){
        case 'br':
            $resultado['pais'] = 'Brasil';
            $resultado['capital'] = 'Brasilia';
            break;

        case 'it':
            $resultado['pais'] = 'Italia';
            $resultado['capital'] = 'Roma';
            break;

        // Resto do código...   

        default:
            echo "Nenhum país foi escolhido!";
    }

    return $resultado;
}

Example usage:

$informacoes = paises('br');

if (isset($informacoes)){
    $pais = $informacoes['pais'];
    $capital =  $informacoes['capital'];

    echo $pais . "\n";
    echo $capital . "\n";
}

View demonstração

    
27.07.2016 / 17:21
3

Another example if you need to:

  • receive a country code, search it in the array and type the name of the country.

    // abaixo mostra o array que o exercício pede para efetuar a pesquisa
    $paises = array(
    
       array("br", "Brasil", "Brasília"),
       array("usa", "Estados Unidos", "Washington"),
       array("tur", "Turquia", "istambul")
    
    );
    
  • The search has to be done in a function.

  • the country code has to be passed the function as a parameter.

We are going to put the array inside the function and do a search:

    function pesquisa($cod){

    // abaixo mostra o array que o exercício pede para efetuar a pesquisa
    $paises = array(

       array("br", "Brasil", "Brasília"),
       array("usa", "Estados Unidos", "Washington"),
       array("tur", "Turquia", "Istambul")

    );

    //vamos usar este array para retornar os valores
    $valores = array();

    //agora vamos varrer o array e pesquisar o código

    for($x=0; $x < count($paises); $x++){

        if($paises[$x][0] == $cod){

            $valores[0] = $paises[$x][1];
            $valores[1] = $paises[$x][2];

            break;

        } else {

            $valores[0] = false;
            $valores[1] = "Não foi possível realizar sua consulta: código incorreto ou não existe!";

        }

    }

    return $valores;

}

 print_r(pesquisa($_GET['cod']));
  • the function must indicate the country and the capital.

When we use url www.pesquisa.com/index.php?cod=tur the function will return:

  

Array ([0] = > Turkey [1] = > Istanbul)

    
27.07.2016 / 20:19