根据PHP中另一个表的结果分配数组键

时间:2011-05-09 15:55:08

标签: php mysql loops

我有一个标准表来存储表单输入,列有“firstName,lastName,email”。实际上还有很多,但为了简单起见,我会把它留在3。这些字段需要发送到外部API,但键实际上是整数...所以“firstName”实际上作为“12345”发送到API。

我有第二个包含API密钥和表单密钥的表。

我正在寻找使用API​​密钥和表单值的数组。例如:$ data [12345] ='John'。实际上,如果要提交多种表单,则应该是$ 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 :(得分:0)

这是我想出的一个解决方案,可能有助于某人。其他(更好的)解决方案也将受到赞赏。

// 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。