2011-04-17 221 views
2

這可能是一個有點棘手。首先這裏是我的功能:創建動態PHP陣列

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輸出:

ID,用戶名,密碼,電子郵件,網址,頭像,B_DATE,r_date,l_date

$ smf_columns輸出:

id_member,MEMBER_NAME,passwd文件,EMAIL_ADDRESS,WEBSITE_URL,頭像,生日,date_registered,LAST_LOGIN

我需要在$ transfer_user查詢行末尾的陣列有一個數組,像這樣。

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

但我需要與各行從$ smf_columns動態地做到這一點。

+0

我可以重寫和優化它的一半是當前的大小**聳聳肩**這是一個問題或請求?你到底在問什麼? – Khez 2011-04-17 04:50:57

+0

我知道它現在不是最好的,我通常編碼它,然後重新編碼它,一旦它以更好的方式工作。只是我的做法。但我不知道如何做這部分。我只需要能夠做到像** $ transfer_user內的foreach **陣列與** $ smf_columns每列** – CodyRob 2011-04-17 04:55:57

+0

東西有點像' $ transfer_user = $這個 - > sys_db->查詢(「INSERT INTO'members'(」。$ sys_columns。 ')VALUES('。$ question_marks。 ')',陣列( \t的foreach($ smf_columns爲$列) \t { \t \t $用戶[$柱]。 \t } ));' – CodyRob 2011-04-17 04:57:41

回答

2

如果我理解正確的問題。嘗試:

$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

謝謝你。這工作! – CodyRob 2011-04-17 05:21:56