- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我尝试导入 csv 文件,所有空行也会被导入。
我有一个采用 csv 文件的表格
下面是表单 Action 代码
$file = $_FILES['file']['tmp_name'];
$allowedExts = array("csv");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (!in_array($extension, $allowedExts)) {
$this->session->set_flashdata('msg', 'Please upload a csv file format.');
}
else {
$handle = fopen($file, "r");
$c = 0;
$flag = true;
while(($filesop = fgetcsv($handle, 0, ",")) !== false)
{
if($flag) { $flag = false; continue; } //to skip the title row
if($filesop != NULL ) { //CONDITION TO CHECK EMPTY ROWS (DOES not work..)
$data[] = array(
'id'=>0, //uploader user id
'field1' => (isset($filesop[14]) ? $filesop[14] : "" ),
'field2' => (isset($filesop[15]) ? $filesop[15] : "" ),
'field3' => (isset($filesop[1]) ? $filesop[1] : "" ),
'field4' => (isset($filesop[13]) ? $filesop[13] : "" ),
'field5' => (isset($filesop[6]) ? $filesop[6] : "" ),
'field6' => (isset($filesop[2]) ? $filesop[2] : "" ),
'field7' => (isset($filesop[5]) ? $filesop[5] : "" ),
'field8' => (isset($filesop[3]) ? $filesop[3] : "" ),
'field9' => (isset($filesop[4]) ? $filesop[4] : "" ),
);
}
}
echo "<pre>";
print_r($data);
exit;
请帮我解决,我该怎么做才能不导入空行
最佳答案
我会使用 array_filter 从数组中删除空元素,然后检查是否还有剩余。
while(($filesop = fgetcsv($handle, 0, ",")) !== false){
$empty_filesop = array_filter( array_map('trim', $filesop));
if( !empty( $empty_filesop ) ){
.....
}
}
Array map with trim,将修剪数据以删除带有空格的行,例如 ,{space},
可以这样想:
foreach( $empty_filesop as &$item )
$item = trim( $item );
此外,请注意 PHP 将一些您可能不认为是空的东西视为空,并将使用标准 array_filter 将它们删除,例如 0
中的 ,0,
或者 array( 0, 'blah' )
带有 0
的元素将被删除。如果您需要更高的准确性,您可以这样做:
$empty_filesop = array_filter(
array_map('trim', $filesop),
function( $item ){
return strlen( $item ); //return the string length of $item ( 0 is false > 0 is true )
}
);
如果你依赖于元素位置,如果有空行,它会改变,所以复制它来检查。例如使用 $empty_filesop
这样你就不会用过滤器改变实际的行......
http://php.net/manual/en/function.array-filter.php
http://php.net/manual/en/function.array-map.php
http://php.net/manual/en/function.trim.php
对于 header ,这样做(我不知道原始 key ):
$headers = false;
$order = ['id'=>0, 'org3'=>'', 'org2'=>'', 'org1'=>''];
while(($filesop = fgetcsv($handle, 0, ",")) !== false)
{
if(!$headers) { $headers = $filesop; continue; }
$empty_filesop = array_filter( array_map('trim', $filesop));
if( !empty($empty_filesop)){
//check for empty rows
if( count( $headers ) == count($filesop) ) {
//check for rows with extra or missing delimiters.
$data[] = array_replace( $order, array_combine( $headers, $filesop)); //combine with original headers, and replace the data in the 'order row' to re-order.
}else{
//row is missing or has extra delimiters.
}
}
}
关于php - 在 php 中将 csv 文件导入 mysql - 如何忽略空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41373248/
我想用 python 读取串行端口,并用 readline 打印结果,但我在所有结果行之间得到空行。你能告诉我如何删除所有空行吗? 我的代码: #!/usr/bin/python import ser
我正在编写一个程序,该程序存储用户输入的数字,但如果输入空白则退出。 我尝试将其设为字符数组并检查长度。如果长度大于0,则表示有输入,因此它将存储输入。如果长度为0,则表示没有输入,因此退出循环。 d
这个项目要求我通过取出所有注释、空行、额外的空格和括号中的信息来读取处理中的文件,然后将其打印到output.txt中。我在处理数据和删除所有注释、空行、额外的空格和括号中的信息时遇到了麻烦。 这是我
有没有办法从服务器响应中删除空行?我已经尝试过: trimSpaces true 和 这没有正确解决问题,因为在 init param 方法中它甚至删除了
你好, if('\t' == input [0] ||'\v' == input [0] ||'\r' == input [0] ||'\n' == input [0] || '\0' == in
我不知道如何用语言来解释这个场景。所以我在写例子: 我有一个名为 tblType 的表: type_id | type_name --------------------- 1 |
代码如下: <?php /* *读取文件内容至字符串中,同时去除换行、行首行尾空格。 */ header("Content-type: text/html; chars
我正在将行与两个文本文件的行进行比较,ref.txt (引用)和 log.txt .但是我想忽略任一文件中的任意数量的空行;我怎样才能做到这一点? ref.txt one two three end
关于删除jtable中未使用的行的问题我正在使用DefualtTableModel我的表已经有一些数据并且当我更新它时将一些列留空以稍后更新主题,以便它们是空列..我想在保存数据之前用按钮删除主题..
我看到列表,它有适量的行(根据 QStringList 中的元素数量),但行是空的。 我做错了什么? 在 C++ 中我的代码是: QStringList s; s.append("1"); s.app
我怎样才能从这些行中隐藏 UITableView 的行,什么是不使用的。例如,看截图: 我可以只显示 4 行并隐藏其他未使用的行吗?所以,我只显示 4 行,然后是白屏,而不是现在的行 最佳答案 喜欢将
对于我的 bash/html 中的 CGI,我有这个脚本(只是 awk 脚本,其余代码只是一个简单的 hmtl 代码): for fn in /var/www/cgi-bin/LPAR_MAP/*;
一直在尝试使用输出 html 方法转换 xml 文档,以便使用 xsl 样式表(使用 CSS)在浏览器中显示。想显示以下代码 Source A Co
我想在我的 LOG 语句之后添加一个空行,以使我的日志更加分隔和可读。 我该怎么做? 当前声明: LOGGER.info("Person's name is {} .", person.getNa
我正在执行以下假脱机语句: SET VERIFY OFF SET FEEDBACK OFF SET HEADING OFF SET TRIMSPOOL ON SET TERM OFF SPOOL &p
包含五个相关字段的表格; ID (Autoincrement,unique, etc) ID_customer - ties in each row to another table with cus
我有这样的风格: #cytoscape-container { width: 100%; height: 100%; margin: 0 aut
while((fscanf(datafile, " %127[^;] %[^\n]", name, movie)) == 2) { printf("%s\n", movi
我有这个two commands获取 SID 用户帐户 wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" >
我使用这段代码: window.removeDuplicateLines = function() { "use strict"; var bodyText = $('#text-area')
我是一名优秀的程序员,十分优秀!