Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: ja_himОтветов: 1

Я буду многократно использовать функцию распаковки результирующего набора 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

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

arraysphpkey-value

Ответы

Ответ 1 · ja_him

Это было неправильно, и кто-то однажды сказал мне, что если вам нужно начать писать сложные функции на 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;
        }
    }

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы