Считать значение CSV как логическое с php

1

У меня проблема с тем, как php сохраняет данные в mongoDB. У меня есть файл.csv, в котором у меня есть поле, которое должно быть логическим, поэтому я помещаю для него "false". Когда я прочитал его с php из.csv, это значение является "строкой", которое интерпретируется mongoDB как НЕ-пустой строкой, результатом чего является поле "true". Есть ли способ прочитать его как логическое значение?

Я нашел ответ, который частично разрешит мою проблему (как преобразовать строку в boolean php), но я хочу избежать этой части и прочитать ее как bool или, по крайней мере, сохранить ее как bool в mongoDB со значениями "false" => false, а не 'false' => true

  • 0
    Если вы хотите прочитать строку, содержащую слово типа 'true' или 'false' и трактовать ее как фактическое логическое значение, то вы должны предоставить магию, которая преобразует ее в фактическое логическое значение .... вы можете ' этого не избежать .... В PHP нет такой "волшебной" встроенности .... и это не так, как будто вам трудно
  • 0
    хорошо, если я использую boolval ('false') ==> true, что не соответствует ожиданиям, и я не хочу использовать решения, приведенные в статье, которую я дал в этом вопросе. Но если нет другого выбора, я сделаю все возможное с тем, что у меня есть.
Показать ещё 1 комментарий
Теги:
csv
boolean

1 ответ

1

Простое, но грязное исправление - проверить значение и назначить логическое значение соответственно.

$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);
  • 0
    спасибо, но решение filter_var () работает не так, как я хочу. И я хочу избежать первых двух преобразований, которые вы дали. Как я уже сказал, я сделаю все возможное с тем, что у меня есть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню