使用php将csv值读取为布尔值

使用php将csv值读取为布尔值,php,mongodb,csv,boolean,Php,Mongodb,Csv,Boolean,我对php在mongoDB中保存数据的方式有问题。 我有一个.csv文件,其中有一个必须是布尔值的字段,所以我为它设置了“false”。 当我使用php从.csv读取它时,该值是一个“字符串”,mongoDB将其解释为一个非空字符串,这将导致一个“true”值字段。 有没有办法像读取布尔值一样读取它 我找到了一个可以部分解决我的问题()的答案,但我想避免这一部分,并像bool一样阅读它,或者至少像mongoDB中的bool一样保存它,值为'false'=>false,而不是'false'=>tr

我对php在mongoDB中保存数据的方式有问题。 我有一个.csv文件,其中有一个必须是布尔值的字段,所以我为它设置了“false”。 当我使用php从.csv读取它时,该值是一个“字符串”,mongoDB将其解释为一个非空字符串,这将导致一个“true”值字段。 有没有办法像读取布尔值一样读取它


我找到了一个可以部分解决我的问题()的答案,但我想避免这一部分,并像bool一样阅读它,或者至少像mongoDB中的bool一样保存它,值为'false'=>false,而不是'false'=>true

一个简单但肮脏的修复方法是检查该值并相应地指定一个布尔值

$var = (var === 'true') ? true : false;
或者你甚至可以做一个有可能的数组

$var = (in_array($string, array('1', 'true', true))) ? true : false;
我知道这不是一个完美的解决方案,但它不会奏效

经过更多的研究 我读了更多的书,发现您也可以使用
过滤器\u VALIDATE\u BOOLEAN
过滤器

// This will return either true or false
$var = filter_var($csvValue, FILTER_VALIDATE_BOOLEAN);

如果您想读取包含诸如
'true'
'false'
之类的单词的字符串,并将其视为实际的布尔值,那么您必须提供将其转换为实际布尔值的魔法。。。。你无法避免。。。。PHP没有那种内置的“魔力”。。。。如果我使用boolval('false')==>true,这并不是我所期望的,而且我不想使用我在问题中给出的文章中给出的解决方案,那么对你来说,道厄尔并不难。但是如果没有其他选择,我会尽我所能。
'false'
是一个包含英语单词的字符串,在PHP中作为字符串没有特殊意义,同样,包含英语单词
'true'
的字符串在PHP中作为字符串也没有特殊意义。。。。它们只是字符串,字符序列,在PHP中的处理方式与任何其他字符串的处理方式相同;它们对作为人类的你来说只有特殊的意义。。。。这意味着像
boolval()
这样的函数只将其视为一个没有特殊意义的字符序列,但是filter\u var()解决方案不能像我所希望的那样工作。我想避免你给我的前两个转变,就像我说的,我会尽我所能。