TeisL Skrevet 9. april 2010 Del Skrevet 9. april 2010 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
Jonas Skrevet 9. april 2010 Del Skrevet 9. april 2010 (endret) 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 9. april 2010 av Jonas Lenke til kommentar
BlueEAGLE Skrevet 9. april 2010 Del Skrevet 9. april 2010 Den selvfølgelige måten å feilsøke dette på er var_dump($this->groups); i linjen over array_search og sjekke for n-te gang at det er en matrise. Lenke til kommentar
TeisL Skrevet 9. april 2010 Forfatter Del Skrevet 9. april 2010 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
TeisL Skrevet 9. april 2010 Forfatter Del Skrevet 9. april 2010 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå