Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于PHP中另一个表的结果分配数组键_Php_Mysql_Loops - Fatal编程技术网

基于PHP中另一个表的结果分配数组键

基于PHP中另一个表的结果分配数组键,php,mysql,loops,Php,Mysql,Loops,我有一个标准表来存储表单输入,其中有“firstName、lastName、email”列。实际上还有很多,但为了简单起见,我将它保留在3。这些字段需要发送到外部API,但键实际上是整数。。。所以“firstName”实际上是作为“12345”发送给API的 我还有第二个表,它有API键和表单键 我希望构建一个使用API键和表单值的数组。例如:$data[12345]='John'。实际上,如果要提交多个表单,则应该是$data[0][12345]=“John”,“$data[1][12345]

我有一个标准表来存储表单输入,其中有“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++;
        }

这是可行的,但显然不是最优的,因为它运行多个查询。有什么方法可以解决这个问题吗?

我想出了一个解决方案,它可能会帮助一些人。其他(更好的)解决方案也将不胜感激

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