2010-11-14 2 views
0

Je suis à court d'idées quant à ce qui pourrait être mauvais avec mon code. Cette classe particulière accepte un tableau et le compare à un autre tableau pour obtenir les valeurs communes. Ensuite, il donne accès aux valeurs communes via la fonction final_post_vars_keys(). Mais je reçois l'erreur (dans le titre) chaque fois que je cours le code.array_intersect(): L'argument # 1 n'est pas un tableau?

<?php 

    class PostVarsKeys { 
    private $general_keys = array("name", "email", "custom phone" , "lastname" , "firstname", "fname", "lname", "phone" , "emailaddress" , 
      "phonenumber"); 
    private $post_vars_keys = array(); 


    public function __construct($post_keys){ 
     $counter=0;  
     foreach($post_keys as $key => $value): 
     $this->post_vars_keys[$counter++] = $key; 
     endforeach; 
    } 

    public function final_post_vars_keys(){ 
     return $final_keys = array_intersect($this->general_keys, $this->post_vars_keys); 
    } 
    } 
+0

Je chercherait le code de 'general_keys' et voir si elle est utilisée nulle part ailleurs qui pourrait causer la valeur de changer à quelque chose qui est pas un tableau. – Gabe

Répondre

1

$counter variable est initialisée à zéro à chaque fois dans la boucle foreach. Avez-vous essayé de le sortir?

+0

dang! yah .. mais rien n'a changé. :-( – Joann

+0

En outre, en note, ce serait plus propre: 'foreach ($ post_keys as $ key => valeur $) {$ this-> post_vars_keys [] = $ key;}' – cdhowie

+0

cdhowie: Ne serait pas juste '$ this-> post_var_keys = array_keys ($ post_keys);' être encore plus propre? – Gabe

1

Cast les arguments sous forme de tableaux:

array_intersect((array)$this->general_keys, (array)$this->post_vars_keys); 
Questions connexes