Можно ли использовать функцию / языковую конструкцию, подобную списку, для преобразования в переменную str? - PullRequest
2 голосов
/ 16 июля 2011

Есть ли более элегантный способ объединения нескольких переменных в отличие от «процедурного» метода в PHP?

Например, давайте рассмотрим следующую ситуацию:

$sql_columns = $sql_values = '';
foreach ($this->_data as $column => $value)
{
    // How i d like to do it
    // list ($sql_columns, $sql_values) .= array(", $column", ', ?'); #Error

    // procedural method
    $sql_columns .= ", $column";
    $sql_values  .= ', ?';
}

Ответы [ 4 ]

4 голосов
/ 16 июля 2011

Вы можете сделать:

$sql_columns = implode(', ', array_keys($this->_data));
$sql_values = rtrim(str_repeat('?, ', count($this->_data)), ', ');
2 голосов
/ 16 июля 2011

Вы можете работать с массивами, их ключами и значениями.implode Руководство по PHP полезно для объединения значений.array_fill Руководство по PHP может генерировать ваши метки вопросов.Какой-то быстро набираемый код:

$columns = array_keys($this->_data);
$sql_columns = implode(', ', $columns);
$sql_values = implode(', ', array_fill(0, count($columns), '?'));
1 голос
/ 16 июля 2011
0 голосов
/ 16 июля 2011

А как же

$sql_columns = implode(', ', array_keys($this->_data));
...