Jump to content
acao

[Resolvido] função com param array

Recommended Posts

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

Edited by acao

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Edited by acao

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Edited by acao

Share this post


Link to post
Share on other sites
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

Edited by HappyHippyHippo

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.