Php 如何在导出到CSV时更改阵列的顺序?
用户将选择要导出的特定列。我正在使用Php 如何在导出到CSV时更改阵列的顺序?,php,csv,Php,Csv,用户将选择要导出的特定列。我正在使用in_arrayPHP函数搜索列是否被选中。我的问题是,我的列名与行值不匹配 数组push中的第二个参数是该列的数据 这是我的密码: $values = $_POST['fields']; $columnName = array(); foreach ($values as $value) { array_push($columnName, $value); } fputcsv($output, $columnName, $delimeter); $l
in_array
PHP函数搜索列是否被选中。我的问题是,我的列名与行值不匹配
数组push中的第二个参数是该列的数据
这是我的密码:
$values = $_POST['fields'];
$columnName = array();
foreach ($values as $value) {
array_push($columnName, $value);
}
fputcsv($output, $columnName, $delimeter);
$linedata = array();
if (in_array("Full Name", $values)) {
array_push($linedata, $info_name[$i]);
}
if (in_array("Contact", $values)) {
array_push($linedata, $info_mobile[$i]);
}
if (in_array("DOB", $values)) {
array_push($linedata, $info_dob[$i]);
}
if (in_array("Gender", $values)) {
array_push($linedata, $info_gender[$i]);
}
if (in_array("BUMO", $values)) {
array_push($linedata, $info_bumo[$i]);
}
if (in_array("Address", $values)) {
array_push($linedata, $info_address[$i]);
}
if (in_array("Bar Name", $values)) {
array_push($linedata, $info_barName[$i]);
}
if (in_array("Reward Name", $values)) {
array_push($linedata, $info_rewardName[$i]);
}
if (in_array("BA", $values)) {
array_push($linedata, $info_BAName[$i]);
}
if (in_array("Date Registration", $values)) {
array_push($linedata, $info_dateRegister[$i]);
}
fputcsv($output, $linedata, $delimeter);
您需要在
$values
上循环,并将相应数组中的元素添加到$linedata
,以便它们的顺序相同
$linedata = [];
foreach ($values as $value) {
switch ($value) {
case 'Full Name':
$linedata[] = $info_name[$i];
break;
case 'Contact':
$linedata[] = $info_mobile[$i];
break;
case 'DOB':
$linedata[] = $info_dob[$i];
break;
...
}
}
fputcsv($output, $linedata, $delimiter);
也不需要第一个foreach
循环$columnName
只是$values
的一个副本,因此您可以使用
fputcsv($output, $values, $delimiter);
写入标题行。该值来自何处?从数据库?最好是有一个列的白名单,然后只选择用户选择的列,而不是选择所有列,然后过滤后处理!成功了。我只是把fputcsv放在foreach后面。