我到底做错了什么。我希望我们首先得到的数组被转置。然后正则表达式分解其中一列,因此我们可以查询数据库中的另一个表,将该列标题替换为正确的标题。正则表达式是否正确?转置是正确的吗?
这将获得我们想要的查询
exportMysqlToCsv($tablename,$tokenmain, $id);
function exportMysqlToCsv($tablename,$tokenmain, $id, $filename = 'Results.csv'){
$sql_query = "select * from $tablename where $tokenmain";
// Gets the data from the database
$result = mysql_query($sql_query);
$f = fopen('php://temp', 'wt');
$first = true;
$temp = mysql_fetch_array($result);我希望这能颠倒我们刚刚得到的数组。在这里不确定
array_unshift($temp, null);
$transposed_array = call_user_func_array('array_map', $temp);然后,我们循环转置数组并替换我们收到的列标题(例如。111X2222X3333),并将它们拆分,以查询我们想要替换它们的标头,并将其输出到excel文件。这就是我非常困惑的地方。
for ($i = 0; $i < $count; $i++) {
if ($transposed_array[$i][0])//starts with a number
{
$sid = regexp /^[0-9]*/
$gid = regexp /X[0-9]*X/
//remove first and last character from $gid
$gid = str_replace("X", "", $gid)
$qid = regexp /[0-9]*$/
$question_text = mysql_query("select question from lime_questions where sid = ".$sid." and gid = ".$gid." and qid = ".$qid." limit 1");
$transposed_array[$i][5] = $question_test
}这应该会将数组输出到csv文件
while ($row = mysql_fetch_assoc($result))
{
if ($first)
{
fputcsv($f, array_keys($row));
$first = false;
}
fputcsv($f, $row);
} // end while//恢复正常处理
$size = ftell($f);
rewind($f);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");//以适当的mime类型输出到浏览器,由用户选择;)
header("Content-type: text/x-csv");
header("Content-type: text/csv");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
fpassthru($f);
exit;发布于 2012-11-01 04:29:11
不确定您要实现什么,因为下面的表达式不是有效的PHP表达式
$sid = regexp /^[0-9]*/
$gid = regexp /X[0-9]*X/
$qid = regexp /[0-9]*$/但是从你的评论来看
我想让这个循环把我们从第一个数组中得到的列标题分开。列标题的一个示例是111X222X3333。我想使用正则表达式将它们分开,这样每一个都有自己的属性,比如sid =111、gid=222和qid=3333
你所需要的是
$string = "111X222X3333" ;
list($sid,$gid,$qid) = explode("X", $string);https://stackoverflow.com/questions/13166492
复制相似问题