我会处理一个CSV文件,当所有人都这么说时,我最终会得到类似的东西
facenet
我现在要做的是处理数据数组。我尝试的第一件事是删除任何具有空值的东西。为此,我正在尝试以下
Array
(
[0] => Array
(
[Title] => 11AA002
[Supplier Name] => Supplier A
[Supplier Name2] =>
[Effects2] => Bass
[Effects3] => Percussion
[Effects4] => Jazz / Piano
[Effects5] => Drums
[Components2] => Kit
[Components3] =>
[Components4] =>
[Technology Areas2] => Something
[Technology Areas3] =>
[Technology2] => Cold
[Technology3] => Hot
[Technology4] =>
[Technology5] =>
[Briefs & Brands2] =>
[Briefs & Brands3] =>
)
//Other elements
)
这似乎不会从数组中删除元素。因此,在上面的示例中,应删除诸如Supplier Name2之类的内容。
还有一些其他的事情我想解决但不知道从哪里开始。标题应始终采用以下格式YYSUPCCC,其中YY是年份,SUP是第一个供应商的前3个字母,CC是计数。所以上面的例子不正确,它应该是16SUP001。具有相同供应商的下一个数组元素将是002。
这样的事情会成为可能吗?任何建议表示赞赏。
由于
答案 0 :(得分:2)
使用引用&
到$row
直接修改数组,只需过滤它:
foreach($csvArray as &$row) {
$row = array_filter($row);
}
那就是它。
答案 1 :(得分:1)
未设置($键);
你试图取消设置键后面的变量(因为这样的变量不存在而没有效果),而不是你想要的数组元素。要执行后者,您应该使用源数组。即:
foreach($csvArray as $k=>$row) {
foreach($row as $key => $value) {
if(empty($value)) {
unset($csvArray[$k][$key]);
}
}
}
代替。
答案 2 :(得分:0)
您必须从原始数组中取消设置密钥:
foreach($csvArray as $key1 => $row) {
foreach($row as $key => $value) {
if(empty($value)) {
unset($csvArray[$key1][$key]);
}
}
}
希望它有所帮助。