0

如果其中一行具有空值,我正在尝试拆分数组。我的数组被导出到一个 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");
    };

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

西蒙

4

3 回答 3

0

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

$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

于 2013-03-24T23:21:32.653 回答
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 .
}
于 2013-03-24T23:19:26.070 回答
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);
};
于 2013-03-24T23:28:31.290 回答