Avatar billede jwulff Nybegynder
20. februar 2010 - 09:34 Der er 11 kommentarer og
2 løsninger

If sætning i en klasse

Hej Eksperter,

Jeg har følgende kode, hvor jeg gerne vil indsætte en IF sætning, men får desværre fejl.

var $tbFields = array(

'userID'=> 'user_id',
   
if (1 = 1) {
'login' => 'email',
} else {
'login' => 'phone',
}

);

Får fejlen: syntax error, unexpected T_IF, expecting ')'

Skal IF sætningen skrives anderledes når den ikke er i en funktion, i en klasse?
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 09:42 #1
if (1 = 1) {
$banan = 'email';
} else {
$banan = 'phone';
}

var $tbFields = array(

'userID'=> 'user_id',
'login' => $banan 


);
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 09:43 #2
Eller


var $tbFields = array(

'userID'=> 'user_id',
'login' => 1==1 ? 'email' : 'phone'


);
Avatar billede jwulff Nybegynder
20. februar 2010 - 09:55 #3
#1 Får fejlen syntax error, unexpected T_IF, expecting T_FUNCTION in

#2 Får fejlen syntax error, unexpected T_IS_EQUAL, expecting ')' in

Vi er i en klassefil.
Avatar billede jwulff Nybegynder
20. februar 2010 - 09:56 #4
Det er meningen jeg vil lave følgende tjek:

'login' => is_int($_POST['email']) ? 'email' : 'phone',

Så hvis det er int så vælger den phone, og ellers email.
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 10:02 #5
Ja, men, hvad er præcis den kode, hvor den siger fejl?
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 10:04 #6
(og så vil du senere opdage, at is_int ikke kan bruges her. Alt hvad der kommer fra $_POST er strenge)
Avatar billede jwulff Nybegynder
20. februar 2010 - 10:07 #7
Det er de linier som du har skrevet ovenover.

syntax error, unexpected T_IF, expecting T_FUNCTION i
Linie: if (1 = 1) {

syntax error, unexpected T_IS_EQUAL, expecting ')' in
Linie: 'login' => 1==1 ? 'email' : 'phone

Okay. Hvordan laver jeg et tjek, der ser om der er et @ i strengen?
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 10:08 #8
Ja, men, hvad er præcis den kode, hvor den siger fejl?
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 10:10 #9
Ok, i det første tilfælde er det fordi man ikke skriver (1 = 1) men (1 == 1) - jeg fik kopieret det fra din kode.

I det andet tilfælde vil jeg gerne se hele koden.
Avatar billede jwulff Nybegynder
20. februar 2010 - 10:34 #10
1 == 1 giver samme fejl.

Koden er pæn lang, men starter således:

class flexibleAccess{

var $dbName = XX

if (1 == 1) {
$banan = 'email';
} else {
$banan = 'phone';
}

var $tbFields = array(

      'userID'=> 'user_id',

    'login' => 'phone'
  );

function flexibleAccess($dbConn = '', $settings = '')

.......
Avatar billede erikjacobsen Ekspert
20. februar 2010 - 10:55 #11
Det er jo næppe den præcise kode, du anvender. Men som det står her mangler der et semikolon i linien før if (1==1). Det er så ikke fejlen, ganske vist.

Men man kan jo ikke have sætninger i erklæringsdelene. Det kan man i metoder, herunder constructoren. Erklær dine variabler:

var $dbName;
var $tbFields;

og put værdier i dem i klassens constructor, hvor du også kan have en if-sætning.
Avatar billede wtd_nielsen Nybegynder
20. februar 2010 - 16:08 #12
som eric skriver, så kan du ikke have en if-sætning i en klasse, som ikke er placeret i en konstruktor eller function
Avatar billede wtd_nielsen Nybegynder
20. februar 2010 - 16:10 #13
og det gælder ikke kun if-sætninger.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester