CSV文件到PHP数组转换器

时间:2016-08-24 18:22:48

标签: php arrays csv converter

我有以下(部分)代码,它将检查带有数组的表单中输入的值(如优惠券代码检查)。如果表单中输入的值是数组中的一个,则人们可以在表单中输入代码。

 if(!in_array($posted_value, array('DA001','DA002'))){ //

所以我有一个包含80.000代码的csv文件。无论如何(在线转换器或其他东西)我可以把所有代码放在'之间。 '在a,所以csv现在是:

DA001
DA002
DA003
IE302

我想将其转换为'DA001´, 'DA002', 'DA003', 'IE302'

---这是我的完整代码,其中包含您的代码: 我将codes.csv与.php文件放在同一目录中 这是我现在的代码,但由于我有500个服务器错误,所以出了问题。

add_filter('frm_validate_field_entry', 'my_custom_validation', 10, 3);
function my_custom_validation($errors, $posted_field, $posted_value){
    if($posted_field->id == 9){ //change 25 to the ID of the field to   validate
        $codes = file("codes.csv", FILE_IGNORE_NEW_LINES);
        if (!in_array($posted_value, static $codes = array_flip(...);))){  //change 001 and 002 to your allowed values
        //if it doesn't match up, add an error:
            $errors['field'. $posted_field->id] = 'Deze code is al een keer gebruikt  of bestaat niet.';
        }
    }
    return $errors;
}

1 个答案:

答案 0 :(得分:1)

使用file()函数将文件读入数组。每一行都将成为一个数组元素。

$codes = file("codes.csv", FILE_IGNORE_NEW_LINES);
if (!in_array($posted_value, $codes)) {
    ...
}

但是,使用80K元素搜索数组会很慢。如果您在同一个脚本中重复执行此操作,最好通过将它们转换为关联数组来对它们进行哈希处理:

$codes = array_flip(file("codes.csv", FILE_IGNORE_NEW_LINES));
if (!isset($codes[$posted_value])) {
    ...
}

完整代码应为:

add_filter('frm_validate_field_entry', 'my_custom_validation', 10, 3);
function my_custom_validation($errors, $posted_field, $posted_value){
    if($posted_field->id == 9){ //change 25 to the ID of the field to   validate
        static $codes;
        if (!$codes) {
            $codes = array_flip(file("codes.csv", FILE_IGNORE_NEW_LINES));
        }
        if (!isset($codes[$posted_value])){  //change 001 and 002 to your allowed values
        //if it doesn't match up, add an error:
            $errors['field'. $posted_field->id] = 'Deze code is al een keer gebruikt  of bestaat niet.';
        }
    }
    return $errors;
}