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