如果为空值,则拆分数组

时间:2013-03-24 23:11:47

标签: php

如果其中一行的值为空,我试图拆分数组。我的数组被导出到csv并有多行数据,如果数据不完整,它将被发送到一个不完整的csv,如果它完成,它将被发送一个完整的csv。

这就是我的数组结构看起来像第一行的空白字段是在电子邮件上(这一行应该从数组中分离出来:

array(2) { 
    [0]=> array(6) { 
        ["Username"]=> string(47) " STARRY NIGHT CINEMA - RISE OF THE GUARDIANS " 
        ["Email"]=> string(0) "" 
        ["Location"]=> string(1) "1" 
        ["Type"]=> int(1) 
        ["Title"]=> string(47) " STARRY NIGHT CINEMA - RISE OF THE GUARDIANS " 
        ["Description"]=> string(491) "the Tooth Fairy"
    }
    [1]=> array(6) { 
        ["Username"]=> string(26) "Maui Nui Botanical Gardens" 
        ["Email"]=> string(18) "info@mnbg.org" 
        ["Location"]=> string(1) "1" 
        ["Type"]=> int(1) 
        ["Title"]=> string(26) "Maui Nui Botanical Gardens" 
        ["Description"]=> string(50) "Conserving Hawaiian Plants & Cultural Heritage"
    }
} 

写给我的csv:

    $fp = fopen('entries.csv', 'w');
    foreach ($entries as $fields) {
        fputcsv($fp, $fields);
    }

    fclose($fp);

    if (!copy("http://www.simonstaton.co.uk/entries.csv", "entries.csv")) {
        echo ("failed to copy file");
    };

我不知道从哪里开始,以及我应该使用什么功能,所以非常感谢任何建议。

西蒙

3 个答案:

答案 0 :(得分:0)

您可以检查数组中的任何值是否为空:

in_array('', $array)

所以你可以做一个简单的if

if(in_array('', $array)) {
    //Do whatever you have to do to slip your array. I don't understand exactly what you want the end result to look like .
}

答案 1 :(得分:0)

首先使用fgetcsv()将您的CSV数据打包到数组中。然后使用循环搜索“”。 范例:

$row = 1;
if (($resource = fopen("example.csv", "r")) !== false) {
    while (($data = fgetcsv($resource, 1000, ",")) !== false) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
            if ($data[$c] == "") { 
               // operate 
            }
        }
    }
    fclose($handle);
}

顺便说一下,不要使用split()功能。使用preg_split()http://php.net/manual/en/function.fputcsv.php

答案 2 :(得分:0)

要将条目分开完整或不完整,您可以打开两个文件进行写入。一个包含每个。

// filenames
$fn_complete = 'entries.csv';
$fn_incomplete = 'incomplete_entries.csv';

// file pointers
$fp_complete = fopen($fn_complete, 'w');
$fp_incomplete = fopen($fn_incomplete, 'w');

// write CSVs
foreach ($entries as $fields) {
    if (in_array('', $fields))
        fputcsv($fp_incomplete, $fields);
    else
        fputcsv($fp_complete, $fields);
}

fclose($fp_complete);
fclose($fp_incomplete);

if (!copy('http://www.simonstaton.co.uk/' . $fn_complete, $fn_complete)) {
    echo ('failed to copy file ' . $fn_complete);
};
if (!copy('http://www.simonstaton.co.uk/' . $fn_incomplete, $fn_incomplete)) {
    echo ('failed to copy file ' . $fn_incomplete);
};
相关问题