Ir para o conteúdo
acao

[Resolvido] função com param array

Mensagens Recomendadas

acao    19
acao

boas

tenho que passar valores na função por array, acontece que nunca não usei.

já golei um bom bocado e ainda não encontrei tutorial que me elucidasse.

perguntas:

a função está bem declarada?

como chamo ela ?.

public function autorizarNivelAcesso($param = Array('idAutorizar1'=>"",'idAutorizar2'=>"",'idAutorizar3'=>"",'idAutorizar4'=>"")) {
 try {
	 $Entrada = FALSE;
	 if ($this->loginValido()){
		 if($param[idAutorizar1] != ""){
			 if($_SESSION['login']["IdNivelAcesso"] == $param[idAutorizar1]){
				 $Entrada = FALSE;
			 }
		 }
		 if($param[idAutorizar2] != ""){
			 if($_SESSION['login']["IdNivelAcesso"] == $param[idAutorizar2]){
				 $Entrada = TRUE;
			 }
		 }
		 if($param[idAutorizar3] != ""){
			 if($_SESSION['login']["IdNivelAcesso"] == $param[idAutorizar3]){
				 $Entrada = TRUE;
			 }
		 }
		 if($param[idAutorizar4] != ""){
			 if($_SESSION['login']["IdNivelAcesso"] == $param[idAutorizar4]){
				 $Entrada = TRUE;
			 }
		 }
		 if($Entrada == FALSE){
			 header('location:index.php?Sempermissao');
		 }
	 }else{
		 header('location:index.php?Sempermissao');
	 }
 }catch ( PDOException $e ) {
 echo "ClassloginAv autorizarNivelAcesso. Erro: " . $e->getMessage( );
 return false;
 }
}

cumps

acao

Editado por acao

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

pelo que percebi da função o que pretendes é isto :

// eu sei que é uma função de uma classe

public function autorizarNivelAcesso($param) {
 if (!is_array($param))
   return false;

   $ok = false;
   try {
     $valido = $this->loginValido();
   } catch ( PDOException $e ) {
     echo "ClassloginAv autorizarNivelAcesso. Erro: " . $e->getMessage( );
     return false;
   }

   foreach ($param as $value) {
     if ($_SESSION['login']["IdNivelAcesso"] == $value) {
       $ok = true;
     }
   }

   if(!$ok){
      header('location:index.php?Sempermissao');
      die();
   }

   return true;
}

// assumindo que a variável que guarda a instância da classe se chama $login
$array = array();
$array['idAutorizar2'] = 3;
$login->autorizarNivelAcesso($array);


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
acao    19
acao

boas

@HappyHippyHippo,

obrigado mais uma vez pela sua colaboração, e agradeço a função, e acredito que funcione em pleno, o meu propósito era compreender como funcionam os arrays nas funções, se fizer copipaste quando voltar a precisar estou 0.

como chamaria a função que coloquei?

não dá para para ser declarada já com os arrays vazios, e depois ser chamada numa só linha.

eu tentei assim entre outras mas não funcionou

autorizarNivelAcesso($user = ['idAutorizar2']= 2,['idAutorizar3']= 3,['idAutorizar4']=4);

cumps

acao

Editado por acao

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
acao    19
acao

boas

editei o poste anterior já depois de você ter postado.

a minha questão «a função está bem declarada?»

coloquei esta questão porque quando declarei a função assim «public function autorizarNivelAcesso($param = Array('idAutorizar1'=>"",'idAutorizar2'=>"",'idAutorizar3'=>"",'idAutorizar4'=>""))» tinha por objectivo que ao chamar a função fossem visíveis as keys do array.

e depois atribuir-lhe o valor direto ou seja tudo nos parâmetros.

é possível fazer isso?

cumps

acao

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
acao    19
acao

boas

recapitulando,

para amostrar a indicação do valores a inserir só assim: public function teste($azeitonas,$vinho),

com arrays não temos essa possibilidade?

,portanto se quisermos comparar uma chave especifica temos que conhecer a função. para colocar a chave certa?

cumps

acao

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

os parâmetros de uma função são variáveis, sejam elas preenchidas com dados passados por valor ou por referência.

em PHP, as variáveis não tem tipo. nada me impede de ter o seguinte código:

function output($inteiro) {
 var_dump($inteiro);
}

output(1010);             // estou a passar um inteiro
output("2020");           // estou a passar uma string
output(array(1=>"3030")); // estou a passar um array

o que tens no teu código não é mais do que fornecer os dados caso o parâmetro não tenha sido fornecido:

function output($inteiro = 1010) {
 var_dump($inteiro);
}

output(1010);             // output : 1010
output("2020");           // output : 2020
output(array(1=>"3030")); // output : Array(1 => 3030)
output();                 // output : 1010

agora tira as tuas conclusões sobre o que estás a pretender fazer


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
acao    19
acao

boas

mais um exemplo para perceber o ainda não percebido.

assim amostro as variáveis a indicar quais o valor pretendidos

function teste($azeitonas,$vinho){
			if ($azeitonas ==20){echo 'já bebo 2 copos tres';}
			if($vinho ==5){echo 'já estou caneco';}
	}

chamo assim: mas tenho que ter cuidado se faltar uma variável vai problemas.

teste(20, 5);

com array:

function teste1($param=array()) {
			if($param["azeitonas"] == 20){echo 'já bebo 2 copos tres';}
			if($param["vinho"]==5){echo 'já estou caneco';}
	}

eu conheço a função ou fui consultar, logo sei que necessito das keis (azeitonas e vinho) foi só fazer o array.

$array = array("azeitonas"=>20,"vinho"=>5);
	teste1($array);

agora como você fazia a função para não ter de a consultar, porque são necessárias as keis certas?

desculpe a chatice

cumps

acao

Editado por acao

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

vamos lá ver se percebes assim:

function output($param = array()) {
 var_dump($param);
}

output(array("id" => 1010)); // output : Array(id => 1010)
output(2020);                // output : 2020
output();                    // output : Array()

por palavras, os dados que atribuis na declaração dos parâmetros da função servem somente para atribuir um valor por defeito ao parâmetros caso este não seja atribuído na chamada da função.

logo, como disse anteriormente, não existe maneira de forcar as keys, porque nem sequer podes forçar o tipo de dados !!!

ou alteras a tua função para não usar arrays (o que deverá ser o mais simples) ou terás sempre de confirmar que o parametro é um array e que nesse array existem as keys que necessitas

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.