2017-05-22 2 views
1

J'ai écrit ci-dessous des lignes de codeproblème dans le code alors que les variables de manière dynamique writting

  $advsr_firstname="David" 
      $advsr_middlename =""; 
     // note that these two are passed through function parametre 



      $first_name=array('$or' => array(array("student.first_name" => new MongoRegex("/$advsr_firstname/i")))); 
      $last_name= array('$or' => array(array("student.last_name" => new MongoRegex("/$advsr_middlename/i")))); 

      $keyarguments = array(
       'first_name=>advsr_firstname', 
       'last_name=>advsr_middlename' 
       ); 

       $empty = "X9w+"; 

       foreach ($keyarguments as $key => $value) 
       { 

       if(${$value} =='' || ${$value} =='0' || ${$value} =="Select") 
       { 
        ${$key} = array('$or' => array(array("dummy_feild" => new MongoRegex("/$empty/i")))); 
       } 
       }  

      $orrollno= array('$or' => array(array("student.roll_no" => new MongoRegex("/$arg/i"))));  

      $query = array('$or' => array($first_name,$last_name,$orrollno)); 

Je suis en train d'écrire la requête dynamique afin que $query fonctionnera correctement.

Je veux que si "advsr_middlename $" est vide, le code devrait modifier dynamiquement l'expression last_name $ dans la boucle comme

$last_name = array('$or' => array(array("dummy_feild" => new MongoRegex("/$empty/i")))); 

Il est de lancer des messages d'erreur prenom Undefined variable => advsr_firstname ... S'il vous plaît aidez-moi comme le code ne fonctionne pas !!!

+1

il ressemble 'keyarguments' $ est mal écrit. La clé et la valeur doivent être cotées plutôt que des guillemets autour de l'entrée entière – RamRaider

+0

Pourquoi vous n'avez pas indenté votre code? – sensorario

Répondre

0

Je pense que cela pourrait être la solution: fixer la syntaxe de tableau à partir $keyarguments

 $keyarguments = array(
      'first_name=>advsr_firstname', 
      'last_name=>advsr_middlename' 
      ); 

à

$keyarguments = [ 
    'first_name' => 'advsr_firstname', 
    'last_name' => 'advsr_middlename', 
];