У меня проблема с тем, как php сохраняет данные в mongoDB. У меня есть файл.csv, в котором у меня есть поле, которое должно быть логическим, поэтому я помещаю для него "false". Когда я прочитал его с php из.csv, это значение является "строкой", которое интерпретируется mongoDB как НЕ-пустой строкой, результатом чего является поле "true". Есть ли способ прочитать его как логическое значение?
Я нашел ответ, который частично разрешит мою проблему (как преобразовать строку в boolean php), но я хочу избежать этой части и прочитать ее как bool или, по крайней мере, сохранить ее как bool в mongoDB со значениями "false" => false, а не 'false' => true
Простое, но грязное исправление - проверить значение и назначить логическое значение соответственно.
$var = (var === 'true') ? true : false;
Или вы даже можете создать массив с возможностями.
$var = (in_array($string, array('1', 'true', true))) ? true : false;
Я знаю, что это не идеальное решение, но оно будет работать бесцельно.
Я прочитал еще немного и узнал, что вы также можете использовать фильтр FILTER_VALIDATE_BOOLEAN
.
// This will return either true or false
$var = filter_var($csvValue, FILTER_VALIDATE_BOOLEAN);
'true'
или'false'
и трактовать ее как фактическое логическое значение, то вы должны предоставить магию, которая преобразует ее в фактическое логическое значение .... вы можете ' этого не избежать .... В PHP нет такой "волшебной" встроенности .... и это не так, как будто вам трудно