2011-04-17 4 views
2

cela peut être un peu difficile. est d'abord ici ma fonction:Créer un tableau PHP dynamique

public function transfer_smf_userinfo($username) 
{ 
    $sys_columns = implode(', ', $this->_config['bbauth']['columns']['sys']); 
    $smf_columns = implode(', ', $this->_config['bbauth']['columns']['smf']); 

    $question_marks; 

    for($i = 0; $i > sizeof($this->_config['bbauth']['columns']['sys']); $i++) 
    { 
     if(sizeof($this->_config['bbauth']['columns']['sys']) == $i - 1) 
     { 
      $question_marks .'?'; 
     } 
     else { 
      $question_marks .'?, '; 
     } 
    } 

    $user = $this->smf_db->query('SELECT '. $smf_columns .' FROM `smf_members` WHERE member_name = ? LIMIT 1', array($username)); 

    if($user->num_rows > 0) 
    { 
     $user = $user->row_array(); 

     $user['register_date'] = date('Y-m-d H:i:s', $user['register_date']); 
     $user['last_login'] = date('Y-m-d H:i:s', $user['last_login']); 

     $transfer_user = $this->sys_db->query('INSERT INTO `members` ('. $sys_columns .') VALUES ('. $question_marks .')', array()); 

     if($transfer_user) 
     { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
    else { 
     return false; 
    } 
} 

$ sys_columns sorties:

id, nom d'utilisateur, mot de passe, email, url, avatar, B_DATE, r_date, l_date

$ smf_columns sorties:

id_member, member_name, passwd, email_address, WEBSITE_URL, avatar, date de naissance, date_registered, last_login

je besoin du tableau à la fin de la ligne sur la $ query transfer_user d'avoir un tableau comme si.

array($user['column'], $user['another']); 

Mais je dois le faire de manière dynamique avec chaque ligne de smf_columns $.

+0

Je pourrais probablement réécrire et optimiser cela dans la moitié de sa taille actuelle ** haussements ** Est-ce une question ou une demande? Que demandez-vous/demandez-vous exactement? – Khez

+0

Je sais que ce n'est pas le meilleur en ce moment, je le code habituellement, puis le recoder une fois qu'il fonctionne mieux. Juste ma façon de le faire. Mais je n'ai aucune idée de comment faire cette partie. Je dois juste pouvoir faire comme un foreach dans le tableau ** $ transfer_user ** avec chaque colonne de ** $ smf_columns ** – CodyRob

+0

Quelque chose comme ' $ transfer_user = $ this-> sys_db-> query ('INSERT INTO 'members' (​​». sys_columns $.) VALUES ('. de question_marks $. ')', array ( \t foreach (de smf_columns $ comme colonne $) \t { \t \t $ user [de colonne $]. \t } )); ' – CodyRob

Répondre

2

Si je comprends bien le problème. Essayez:

$data=array(); 
foreach($this->_config['bbauth']['columns']['smf'] as $column) 
    $data[]=$user[$column]; 
$transfer_user = $this->sys_db->query(
    'INSERT INTO `members` ('. $sys_columns .') VALUES ('. $question_marks .')', 
    $data); 
+0

Merci l'homme. Ça a marché! – CodyRob