Php 如何使用filter\u var\u数组筛选日期
我有一个csv文件,其中包含以下格式的行: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
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请检查编辑。只要每个关键字名称都匹配与之相关联的筛选器,则关键字名称无关紧要