Создайте динамический массив PHP

#php #database #dynamic #foreach

#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 выводит:

идентификатор, имя пользователя, пароль, электронная почта, URL, аватар, 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. Вероятно, я мог бы переписать и оптимизировать это до половины текущего размера пожимает плечами Это вопрос или просьба? Что именно вы спрашиваете / запрашиваете?

2. Я знаю, что сейчас это не самое лучшее, я обычно кодирую его, а затем перекодирую, как только он заработает лучше. Просто мой способ сделать это. Но я понятия не имею, как выполнить эту часть. Мне просто нужно иметь возможность выполнять что-то вроде foreach внутри массива $ transfer_user с каждым столбцом из $smf_columns

3. Что-то вроде ` $transfer_user = $this-> sys_db->query(‘ВСТАВИТЬ В members (‘. $sys_columns .’) ЗНАЧЕНИЯ (‘. $question_marks .’)’, array( foreach($smf_columns как $column) { $user[$column] . } ));`

4. Если это все, что вы хотите, проверьте мой ответ. Если что-то отличается, прокомментируйте, и я постараюсь исправить

Ответ №1:

Если я правильно понимаю проблему. Попробуйте:

 $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);