【发布时间】:2020-12-15 15:56:26
【问题描述】:
似乎有几十个主题有类似的问题,而且大多数都有相同的答案:使用array_filter,array_map。问题是我使用了它们,但并没有太大帮助。所以我有一个数组(由 csv 文件中的数据构建):
Array
(
[0] => Array
(
[0] => name
[1] => title
[2] => email
)
[1] => Array
(
[0] => First
[1] => title 1
[2] => email1@ex.com
)
[2] => Array
(
[0] => second
[1] => title 1
[2] => email2@ex.com
)
[3] => Array
(
[0] =>
)
[4] => Array
(
[0] => third
[1] => title 1
[2] => email3@ex.com
)
[5] => Array
(
[0] =>
)
[6] => Array
(
[0] =>
[1] =>
[2] =>
)
)
我必须删除所有空数组。所以我使用这样的代码:
while (($row = fgetcsv($file, 8192, ';')) !== false) {
if (array(null) !== $row) { // ignore blank lines
$csv[] = $row;
}
}
$array = array_filter(array_map('array_filter', $csv));
$array 现在是:
Array
(
[0] => Array
(
[0] => name
[1] => title
[2] => email
)
[1] => Array
(
[0] => First
[1] => title 1
[2] => email1@ex.com
)
[2] => Array
(
[0] => second
[1] => title 1
[2] => email2@ex.com
)
[3] => Array
(
[0] => third
[1] => title 1
[2] => email3@ex.com
)
[4] => Array
(
[1] =>
)
)
为什么有一个空值的第四个数组?我需要摆脱它。
gettype($array[4][1]) = 字符串
更新
csv 有空行,甚至只有一个“;”没有任何字符串的分隔符。我无法影响将数据插入此 csv 的过程。 csv 看起来像这样:
1 row: name;title;email
2 row: First;title 1;email1@ex.com
3 row: second;title 1;email2@ex.com
4 row:
5 row: third;title 1;email3@ex.com
6 row:
7 row: ; ;
【问题讨论】:
-
它看起来像 [6][1] 中的元素,其中有一些空格。
-
你们是对的人。有空行。我将使用 csv 数据更新帖子,以便您了解它是如何工作的。