首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fputcsv用php加值后导入CSV时,值不可见

fputcsv用php加值后导入CSV时,值不可见
EN

Stack Overflow用户
提问于 2020-12-04 18:57:46
回答 1查看 32关注 0票数 0

我试图为我的web项目制作一个翻译模块,但我遇到了障碍。我编写了两个函数,一个用于导入CSV数据,另一个用于更改、删除和添加新数据到CSV文件。

除了添加部分之外,所有的功能都很出色。它会将数据添加到CSV文件中,但是当我想通过PHP将其导入网站时,它不会显示添加的值。(它看到它们应该是值,但返回的结果为空)我用来读取csv文件的函数是:

代码语言:javascript
复制
// Load in CSV (File name, delimiter, Fixed array[key,value] (optional))
function load__CSV($filename='', $delimiter=';', $fixed = null){
    if(!file_exists($filename) || !is_readable($filename)) {
        return FALSE;
    }

    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE) {
        while (($row = fgetcsv($handle, 100000, $delimiter)) !== FALSE) {
            if (!$header) {
                $header = $row;
            } else {
                $data[] = array_combine($header, $row);
            }
        }
        fclose($handle);
    }

    if($fixed != null) {
        foreach($data as $entry){
            $set_csv[$entry[''.$fixed[0].'']] = $entry[''.$fixed[1].''];
        }
    } else {
        $set_csv = $data;
    }

    return $set_csv;
}

我用来添加、编辑或删除CSV内容的函数是:

代码语言:javascript
复制
// Change csv
function update__csv($csv = 'csv/language.csv',$key = array(2,''),$values = array([3,''],[4,'']),$status = 'change') {
    $input = fopen(BASE_URL.$csv, 'r');
    $output = fopen(BASE_URL.'csv/temporary.csv', 'w');

    while (false !== ($data = fgetcsv($input, 10000, ";"))) {
        if ($data[$key[0]] == $key[1]) {
            foreach ($values as $value) {
                $data[$value[0]] = $value[1];
            }
            if ($status == 'change' || $status == 'new') {
                fputcsv($output, $data, ";");
            }
        } else {
            fputcsv($output, $data, ";");
        }
    }

    if($status == 'new'){
        fputcsv($output, $values, ";");
    }

    fclose( $input );
    fclose( $output );

    unlink(BASE_URL . $csv);
    rename(BASE_URL . 'csv/temporary.csv', BASE_URL . $csv);
}

如果我将新的值添加到CSV文件,然后在我的PC上打开CSV,并使用UTF-8编码将其再次安全(不更改任何内容)为CSV,那么它将按预期工作并加载正确的数据。如果我在Notepad++中打开CSV,我会看到手动添加的项目和php添加的项目之间的差异:

我尝试了其他编码方法,但这对我来说是新的,所以我想我做错了什么。提前感谢您对我的帮助!

EN

Stack Overflow用户

发布于 2020-12-04 21:18:13

经过进一步的调试,我确实找到了答案。数组的一个值不包含字符串,但包含true或false语句。这意味着它没有以正确的方式将数据添加到CSV文件中。

我通过在将变量放入数组之前将strval()添加到每个变量来修复它。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65142317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档