Gå til innhold

Problemer med datatypen i search_array


Anbefalte innlegg

Hei,

 

Jeg har et problem med en funksjon med inputparameteren array. Men jeg får bare vite at datatypen er feil.

 

function checkGroups() {
		$exist = false;
		for($i=0; $i<func_num_args();$i++) {
			if($exist==false) {
				if(strlen(array_search(func_get_arg($i), $this->groups)) > 0) {
					$exist = true;
				}
			}
		}
		return $exist;
	}

 

Her er det groups variabelen hvor jeg får denne feilmelingen:

Warning: array_search() [function.array-search]: Wrong datatype for second argument in <...> on line 41

 

groups blir initialisert i toppen av klassen som dette:

class session {
	var $groups;
	var $uname;

 

Her også prøvd dette: var $groups = Array();

 

Så settes denne i denne funksjonen:

 

function getGroups($uname) {
		$this->db = new mySQLConnector();

		$sql = "	SELECT r.rolename
				FROM role AS r
				LEFT JOIN urole AS ur ON ur.roleID = r.roleID
				LEFT JOIN user AS u ON u.userID = ur.userID
				WHERE u.username = '" . $uname . "'";

	$view = $this->db->queryToArray($sql);
	$this->groups = $view['rolename'];
	}

 

Håper noen kan hjelpe meg med denne. Har sittet med denne en gos stund nå å bare klødd meg i hode.

Lenke til kommentar
Videoannonse
Annonse

Jeg tipper at ved å ikke definere hvorvidt en variabel skal være privat, public, protected eller static, så blir den by default satt til privat og isåfall vil den ikke være tilgjengelig utenfor klassen uten videre. Dersom det er tilfelle, så vil array_search bare motta null og derav feilmeldingen.

 

Edit: Ser nå at funksjonen din egentlig er en metode i en klasse. Nevermind..

Endret av Jonas
Lenke til kommentar

Takk for tipset med var_dump() den viste jeg ikke om.

 

Men har funnet ut hvor den ikke lenger er en array.

public function getGroups($uname) {
		$this->db = new mySQLConnector();

		$sql = "	SELECT r.rolename
				FROM role AS r
				LEFT JOIN urole AS ur ON ur.roleID = r.roleID
				LEFT JOIN user AS u ON u.userID = ur.userID
				WHERE u.username = '" . $uname . "'";

	$view = $this->db->queryToArray($sql);
	$this->groups = $view['rolename'];
	}

Det er etter at jeg setter $this->groups = $view['rolename'];

 

queryToArray funksjonen min fungerer alle andre steder og den ser slik ut:

public function queryToArray($sql){
	//Use own query function
	$result = $this->query($sql);

	$array = array();
	while($row = mysql_fetch_array($result)){
		$array[] = $row;
	}

	//Clear result to free memory
	mysql_free_result($result);

	return $array;
}//End queryToArray()

 

Noen som vet hva som gjør at jeg bare får NULL i $this->groups??

Lenke til kommentar

Fant ut av det.

 

$rs = $this->db->query($sql);
	$i=0;
	while($list_group = mysql_fetch_assoc($rs)) {
		$this->groups[$i] = $list_group[rolename];
		$i++;
	}

 

Løste det slik foreløpig. Så da setter jeg tråden min som løst.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...