Boolean from MySQL to PHP - Преобразование в tinyint и сравнение

Моя база данных имеет несколько логических значений. После того, как я сохранил базу данных, логические значения были преобразованы в tinyint (1). Я думаю, это потому, что ему просто нужно сохранить 1 или 0.

Однако у меня теперь есть проблема сравнения значения в PHP. Я сохранил tinyint в массиве без кодового преобразования. Массив имеет несколько записей, которые представляют собой текст и дату, и несколько записей с булевыми элементами, например:

array[0] is '09:45:00'
array[1] is '10:45:00'
array[2] is 1
array[3] is 0
array[4] is 0
array[5] is 1
array[6] is 'active'

Теперь, если я пройду через массив, я хочу проверить, является ли значение временем, текстом или истинным/ложным.

Проверка правильности записи всегда будет возвращать значение true, поскольку ни одна запись не является пустой. Проверка того, что запись 1 или 0 работает для логического, но когда я проверяю, является ли 'active' == 0, он возвращает true. Почему это так и как я могу получить ложь, если я сравниваю строку с tinyint?

Сравнение с === не работает в любом случае.

0
05 июл. '18 в 7:53
источник поделиться
1 ответ

Я думаю, что вы можете сделать это с помощью некоторых вложенных операторов if-else. Но я уверен, что есть и лучшее решение. :)

$a=array('09:45:00','10:45:00',1,0,0,1,'active',3.12);

foreach ($a as $value) {
    $type= gettype($value);
    if ($type == "string") {
        if(strtotime ($value)){
            echo "$value is 'Time' \n";
        }
        else{
            echo "$value is 'String' \n";
        }
    } elseif ($type == "integer") {
        if($value == 0 || $value == 1){
            echo "$value is 'Boolean' \n";
        }
        else{
            echo "$value is 'Integer' \n";
        }
    } else{
        echo "$value is ($type)!";
    }
}
+1
05 июл. '18 в 8:20
источник

Посмотрите другие вопросы по меткам или Задайте вопрос