Php 如何使用filter\u var\u数组筛选日期

Php 如何使用filter\u var\u数组筛选日期,php,Php,我有一个csv文件,其中包含以下格式的行: Name;timestamp;floatValue 该文件有20000多行,我想过滤每行的每个值。我尝试使用以下代码: $args=array(FILTER_SANITIZE_STRING,FILTER_VALIDATE_INT,FILTER_VALIDATE_FLOAT); while (($line = fgetcsv($handle, 1024, ";")) !== FALSE) { $testing = filter_var

我有一个csv文件,其中包含以下格式的行:

Name;timestamp;floatValue
该文件有20000多行,我想过滤每行的每个值。我尝试使用以下代码:

$args=array(FILTER_SANITIZE_STRING,FILTER_VALIDATE_INT,FILTER_VALIDATE_FLOAT);
while (($line = fgetcsv($handle, 1024, ";")) !== FALSE) {

        $testing = filter_var_array($line,$args);
        var_dump($testing);
}
我得到这个错误:

 filter_var_array(): Numeric keys are not allowed in the definition array
所以我这里有两个问题:

  • 为什么会出现这个错误?事实上,由于我无法从该行获得包含键和值的数组,我不知道如何仍然使用
    过滤器\u var\u数组
  • 如何组合过滤字符串、浮动和日期?是否可以跳过中间的日期,使用“<代码>日期时间:”CreateFromFormat < /代码>对其进行过滤?我检查了这个,但是没有日期过滤器
::编辑:::

那么这个呢:

  $data = array(
        'name' => $line[0],
        'timestamp' => $line[1],
        'value' => $line[2]);

        $args=array(
          'name' => FILTER_SANITIZE_STRING,
          'timestamp' => FILTER_VALIDATE_INT,
          'value' => FILTER_VALIDATE_FLOAT);
        $testing = filter_var_array($data,$args);
        var_dump($testing);
请告诉我这是否是一种好方法。

适用于关联数组,而不是数字数组

必须通过添加关联键来变换阵列

$args = array('string' => FILTER_SANITIZE_STRING, 'int' => FILTER_VALIDATE_INT, 'float' => FILTER_VALIDATE_FLOAT);
$keys = array('string', 'int', 'float'); 
while (($line = fgetcsv($handle, 1024, ";")) !== FALSE) {
    $testing = filter_var_array(array_combine($keys, $line), $args);
    var_dump($testing);
}

@StuartWagner我知道还有更多字段要包含,但我要筛选的数组没有键和值(索引数组)
filter\u var\u array()
需要一个带有字符串键的输入数组。如果没有这样的键,您可能需要另一种方法。@StuartWagner那么为什么这个示例有效:
,因为您只指定了一个过滤器,不是像原始代码示例中那样的筛选器数组。@StuartWagner请检查编辑。只要每个关键字名称都匹配与之相关联的筛选器,则关键字名称无关紧要