【发布时间】:2023-03-06 16:46:01
【问题描述】:
我正在通过 JSON 文件在 Raspberry Pi 上收集 ADSB 数据;我正在使用某人的 PHP 代码,该代码从 JSON 文件生成 SQL 数据库。但是我需要一个 csv 文件来输入我开发的分析程序 (SPSS)。 这是创建 sql 数据库的 PHP 代码
// generate sql insert statement per aircraft in range of user set alt_geom/latitude/longitude and optionally according only to hex or flight numbers in hex_code_array.txt and flight_code_array.txt
#var_dump($hex_code_array); var_dump($flight_code_array); // show arrays for debug
if ($user_set_array['filter_mode_database'] && $user_set_array['filter_mode_database_limited']) {
if (($ac_alt_geom != '' && $ac_alt_geom < $user_set_array['max_alt'] && $ac_lat < $user_set_array['max_lat'] && $ac_lat > $user_set_array['min_lat'] && $ac_lon < $user_set_array['max_lon'] && $ac_lon > $user_set_array['min_lon']) && (func_wildcard_search($ac_hex, $hex_code_array, $user_set_array['filter_mode_wildcard']) || ($ac_flight != '' && func_wildcard_search($ac_flight, $flight_code_array, $user_set_array['filter_mode_wildcard'])))) {
$sql .= "INSERT INTO aircrafts VALUES (NULL, '" . date("Y-m-d G:i:s l", $ac_now) . "', '$ac_now', '$ac_hex', '$ac_flight', '$ac_dist', ";
$sql .= "'$ac_alt_geom', '$ac_lat', '$ac_lon', '$ac_track', '$ac_gs', '$ac_baro_rate', '$ac_seen_pos', '$ac_seen', ";
$sql .= "'$ac_rssi', '$ac_messages', '$ac_category', '$ac_squawk', '$ac_alt_baro', '$ac_mlat', '$ac_tisb', '$message_rate');";
$sql .= PHP_EOL;
随着我使用 PHP 的学习曲线上升,我已经修改了一些我在 Stack 的其他地方找到的代码,但它没有生成 csv 文件。我的目标是获取创建 sql 数组的变量并不断更新 csv 文件。
$data= "id,now,hex,flight,distance,altitude,lat,long,track,gs,baro-rate,seen-pos,seen,rasi,messages,category,squark,alt-baro,mlat,tisb,rec-mag-sec\n";
$i = 1;
#echo $data;
$data = array(
array( '$i' ),
array( '$ac_id' ),
array( '$ac_now' ),
array( '$ac_hex' ),
array( '$ac_flight' ),
array( '$ac_distance' ),
array( '$ac_alt_geom' ),
array( '$ac_lat' ),
array( '$ac_long' ),
array( '$ac_track' ),
array( '$ac_gs' ),
array( '$ac_baro_rate' ),
array( '$ac_seen_pos' ),
array( '$ac_seen' ),
array( '$ac_rssi' ),
array( '$ac_messages' ),
array( '$ac_category' ),
array( '$ac_squark' ),
array( '$ac_alt_baro' ),
array( '$ac_mlat' ),
array( '$ac_tisb' ),
array( '$ac_rec_mag_sec' ),
);
}
function outputCSV($data) {
$outputBuffer = fopen("php://output", 'w');
foreach($data as $val) {
fputcsv($outputBuffer, $val);
}
fclose($outputBuffer);
}
$filename = 'aircrafts';
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=($filename).csv");
header("Pragama: no-cache");
hwader("Expires: 0");
outputCSV($data);
【问题讨论】:
-
嗨@Nosajimiki 我不确定你是对的,如果我错了,对不起:),我最初是从 json 文件中读取数据,但删除了不完整的数据并将数据输入 COLUMN VARIABLES而不是数据行。所以我需要知道三件事。一,我是否正确声明了数组语句,因为变量似乎被视为文本。二,如何循环遍历 col 数组的元素。三、我是否正确使用了 fputcsv 命令。我已经广泛搜索了与我类似的示例,但找不到任何示例。感谢您的帮助