使用 PHP 上传 csv 文件时的空验证不起作用

Empty validation on uploading csv file is not working using PHP

提问人:J0sh 提问时间:11/16/2023 最后编辑:J0sh 更新时间:11/16/2023 访问量:39

问:

日安

我试图在我的代码中添加验证,如果“OtherSymptoms”列为空并且“OthersSpecify”具有值,它将返回一条消息,指出“OthersSpecify”应为空,因为“OtherSymptoms”为空。

这是我的代码如下:

if ($column === 'OtherSymptoms') {
    $validValues = ['Y', 'N'];
    $cellValue = $row[$OtherSymptoms];
    $othersSpecifyValue = $row[$OthersSpecify]; 

    if (!in_array($cellValue, $validValues)) {
    $response['errors'][] = [
        'error' => 'Invalid ' . $column . ' Value',
        'message' => '• The value for ' . $column . ' in row ' . $i . ': "' . $cellValue . '" is not valid. Accepted values are: "' . implode('" or "', $validValues) . '".'
        ];
    }

    if (empty($cellValue) && !empty($othersSpecifyValue)) {
        $response['errors'][] = [
            'error' => 'Invalid ' . $column . ' Value',
            'message' => '• The value for ' . $column . ' is empty in row ' . ($i) . ', therefore ' . $OthersSpecify . ' should not value.'
        ];
    }

    if ($cellValue === 'Y' && empty($othersSpecifyValue)) {
        $response['errors'][] = [
            'error' => 'Invalid ' . $column . ' Value',
            'message' => '• The value for ' . $column . ' is set to Y in row ' . ($i) . ', therefore ' . $OthersSpecify . ' in the sperow must not be empty.'
        ];
    }

    if ($cellValue === 'N' && !empty($othersSpecifyValue)) {
        $response['errors'][] = [
            'error' => 'Invalid ' . $column . ' Value',
            'message' => '• The value for ' . $column . ' is set to N in row ' . ($i) . ', therefore ' . $OthersSpecify . ' in the specified row must be empty.'
        ];
    }
}

“Y”和“N”验证工作正常,但当列的空行不工作时。我将不胜感激的纠正和解决方案。谢谢你们。

php csv 上传

评论

1赞 Adi 11/16/2023
这是一个错别字吗 ' '“ 是无效的。接受的值为 Implode('“ 或 ”', $validValues) 。`?
1赞 J0sh 11/16/2023
是的,只有错别字。对不起,编辑它
0赞 Pippo 11/16/2023
这对我来说似乎没问题。也许$row[$OtherSymptoms]需要修剪?
2赞 CBroe 11/16/2023
并非所有“看起来空”的东西实际上都必须空的。用于对相关值进行调试输出 - 这不仅会显示它们的值,还会显示其长度var_dump

答:

0赞 user22919420 11/16/2023 #1
if (empty($cellValue) && !empty($othersSpecifyValue)) {
    $response['errors'][] = [
        'error' => 'Invalid ' . $column . ' Value',
        'message' => '• The value for ' . $column . ' is empty in row ' . ($i) . ', therefore ' . $OthersSpecify . ' should not value.'
    ];
}

您正在测试“OtherSymptoms”($cellValue) 和“OthersSpecify”($othersSpecifyValue)是否都为空。如果满足此条件,则添加一条错误消息,该消息似乎与您期望的相反。如果我理解正确,如果“OtherSymptoms”和“OthersSpecify”都为空,您希望显示错误。当“OtherSymptoms”为空时,应更改条件以检查“OthersSpecify”是否不为空。

if (empty($cellValue) && !empty($othersSpecifyValue)) {
    $response['errors'][] = [
        'error' => 'Invalid ' . $column . ' Value',
        'message' => '• The value for ' . $column . ' is empty in row ' . ($i) . ', therefore ' . $OthersSpecify . ' should be empty.'
    ];
}

评论

0赞 Pippo 11/16/2023
似乎和上面一样
0赞 J0sh 11/16/2023
嗨,对不起,我正在检查$cellValue是否为空且$othersSpecifyValue是否为空,然后我会提示验证错误。您注释的代码与我的代码相同。谢谢