2009-07-17 5 views
0
$modules    = array(
'home'     => 'home', 
'login'     => 'login', 
'forum'     => 'forum', 
'topic'     => 'topic', 
'post'     => 'post', 
'profile'    => 'profile', 
'moderate'    => 'moderate', 
'search'    => 'search', 
'ucp'     => 'usercp', 
'ucc'     => 'usercp', 
'pm'     => 'pm', 
'members'    => 'members', 
'boardrules'   => 'boardrules', 
'groups'    => 'groupcp', 
'help'     => 'help', 
'misc'     => 'misc', 
'tags'     => 'tags', 
'attach'    => 'attach' 
); 

if (in_array($modules, $_GET['module'])) { 
include $_GET['module'].'.php'; 
} 

donne:problème avec tableau

Warning: in_array() [function.in-array]: Wrong datatype for second argument in d:\public_html\forte.php on line 24 

Qu'est-ce qui ne va pas?

+2

Vous avez modifié l'ordre des paramètres de fonction. Devrait être in_array ($ needle, $ haystack) – jason

Répondre

10

Vous avez les arguments mélangés - voir in_array():

if (in_array($_GET['module'], $modules)) { 
    include $_GET['module'].'.php'; 
} 
+0

encore un autre cas de personnes mordues par php étant incompatibles avec la commande aiguille/meule de foin. –

+4

@kent: encore un autre cas de personnes n'utilisant pas d'excellents documents php? – SilentGhost

+2

@SilentGhost Bien que je sois d'accord sur le fait que les docs PHP sont phénoménaux, une commande cohérente aiguille/botte de foin aiderait ceux d'entre nous qui ont les fonctions validées en mémoire à garder l'ordre des arguments droit. – ceejayoz

1

mauvais ordre de la variable passée à in_array

bool in_array (mixed $needle , array $haystack [, bool $strict ]) 
0

De PHP.NET:

bool in_array (mixed $needle , array $haystack [, bool $strict ]) 

Marque sûr que vous êtes aiguille est: $modules et où vous cherchez est: $_GET['module']. J'ai l'impression que vous avez mélangé les deux. Il devrait vraiment être écrit comme ceci:

in_array($_GET['module'], $modules); 

Hope that helps!

Questions connexes