Назначение ключа массива на основе результатов из другой таблицы в PHP - PullRequest
0 голосов
/ 09 мая 2011

У меня есть стандартная таблица для хранения ввода формы, со столбцами «firstName, lastName, email». На самом деле их довольно много, но для простоты я оставлю это в 3. Эти поля должны быть отправлены во внешний API, но ключи на самом деле являются целыми числами ... поэтому «firstName» фактически отправляется как «12345» в API.

У меня есть вторая таблица, в которой есть ключи API и ключи формы.

Я хочу построить массив, который использует ключи API и значение формы. Например: $ data [12345] = 'Джон'. И на самом деле, если нужно отправить несколько форм, это должны быть $ data [0] [12345] = 'John', $ data [1] [12345] = 'Jane' и т. Д.

Вот мое текущее решение:

//$return is an object containing all the form submissions
 $i = 0;
        $data = array();
        foreach ($return as $ret) {
            foreach ($ret as $k => $v) {
                    // function that runs a mySQL query "SELECT apikey FROM api WHERE formkey = '$k'" and returns the apikey
                    $apikey = getApiKey($k);
                    $data[$i][$apikey] = $v; 
            }
            $i++;
        }

Это работает, но, очевидно, не оптимально, так как запускает несколько запросов. Есть ли способ убрать это?

1 Ответ

0 голосов
/ 10 мая 2011

Вот одно решение, которое я выяснил, которое может кому-то помочь. Другие (лучшие) решения также приветствуются.

// I'm using CodeIgniter, but this just puts the apikey into an array with the formkey as the array key

$sql = "SELECT apikey,formkey FROM api";
$query = $this->db->query($sql);
$return = array();
foreach ($query->result() as $row) {
    $return[$row->formkey] = $row->apikey;
}

$i = 0;
$data = array();
foreach ($return as $ret) {
    foreach ($ret as $k => $v) {
        $data[$i][$return[$k]] = $v; 
    }
    $i++;
}

Это сократило количество вызовов в моей базе данных с 80 до 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...