格式化数组数据

时间:2016-10-12 17:39:12

标签: php arrays

我会处理一个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。

这样的事情会成为可能吗?任何建议表示赞赏。

由于

3 个答案:

答案 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]);    
        }
    }
}

希望它有所帮助。