创建动态PHP数组

时间:2011-04-17 04:46:31

标签: php database dynamic foreach

这可能有点棘手。首先是我的功能:

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,username,password,email,url,avatar,b_date,r_date,l_date

$ smf_columns 输出:

  

id_member,member_name,passwd,email_address,website_url,avatar,birthdate,date_registered,last_login

我需要 $ transfer_user 查询行末尾的数组才能拥有这样的数组。

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

但是我需要动态地使用 $ smf_columns 中的每一行。

1 个答案:

答案 0 :(得分: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);