php использовать значение в качестве имени переменной (для ключа) из массива для распаковки набора результатов из Drupal

Я буду многократно использовать функцию распаковки результирующего набора Drupal db_query в своем коде для множества различных запросов - я использую O-O, и поэтому я хочу использовать его повторно и быть как можно более «СУХИМ».

Поэтому я попытался разделить его до наиболее общих функций, чтобы, пока предоставленный $columns соответствовал столбцам, используемым в запросе, и аналогично в $resultset, я мог зацикливаться и назначать значения клавишам, как показано, и возвращать $rows[].

Я еще не сталкивался с проблемой использования значения переменной в качестве имени переменной ($key), если это просто то, чего мне следует полностью избегать, скажите, пожалуйста.

foreach($this->resultSet as $aRecord) {

    $c = 0;

    while (isset($this->columns[$c])) {

        $value =  $this->columns[$c];
        $rows[$i] = array(
            $key[$this->columns[$c]] => $aRecord->$value,
        );

        $c++;
    }

    $i++;
}

Я прочитал следующее и начинаю думать, что это просто знания, которые мне пока не хватает в моем опыте работы с PHP.

Могу ли я использовать сгенерированное имя переменной в PHP?

PHP использует возвращаемое значение функции как массив

https://wiki.php.net/rfc/functionarraydereferencing


person ja_him    schedule 18.12.2012    source источник
comment
$key = 'abc'; $abc = 'hello'; echo $$key; печатает "привет". Это был вопрос?   -  person Ranty    schedule 18.12.2012
comment
Почему бы вам просто не использовать $this->resultSet->fetchAssoc(), который дает вам ассоциативный массив с ключ-значение столбца имя = ›значение   -  person MrCode    schedule 18.12.2012
comment
Действительно сложно понять, в чем заключается ваша реальная проблема (например, как связано разыменование массива функций?) - не могли бы вы немного подробнее рассказать об этом?   -  person Niko    schedule 18.12.2012
comment
разыменование функции-массива больше связано с вещами, которые, как мне кажется, я отклонил как решение (и / или просто не понимаю правильно).   -  person ja_him    schedule 18.12.2012
comment
Я хочу создать массив строк с парами ключ / значение в столбцах и их значениях. Я хочу иметь возможность сделать это, создав класс, который принимает массив столбцов, чтобы я мог использовать имя (значение) столбца в качестве имени ключа (имени переменной), но, поскольку я никогда не думал о том, чтобы пытаться использовать значение чего-либо в качестве ключа, я не уверен, что я все неправильно понимаю. Спасибо за ваши ответы.   -  person ja_him    schedule 18.12.2012
comment
Кроме того, сейчас я рассмотрю возможность использования fetchAssoc (), спасибо   -  person ja_him    schedule 18.12.2012


Ответы (1)


Это было неправильно, и кто-то однажды сказал мне, что если вам нужно начать писать сложные функции на PHP, вы, вероятно, пропустили доступную функцию, которую PHP уже предлагает ... так верно ... благодаря (на момент написания ...) "MrCode" для этого предложения.

    $this->sql = "SELECT foo, bar FROM foobar";
    $this->result = db_query($this->sql);

    if ($this->result->rowCount() > 0) {

        while ($row = $this->result->fetchAssoc()) {

            $this->resultArray[] = $row; 
        }
    }
person ja_him    schedule 18.12.2012