При использовании массива оператор PHP всегда выбирает случайный или случайный регистр - PullRequest
0 голосов
/ 24 июня 2019

Я использую переключатель для чтения значения с определенного ключа из массива.массив имеет 2 вида значений: int (0-9) и hex (0-e).когда я пытаюсь прочитать int, мой переключатель всегда запускается по умолчанию.Когда я пытаюсь вернуть указанные данные, он возвращает 1, и у меня есть случай 1, но вместо этого переключатель работает по умолчанию.

Я попытался перейти на if-else с ошибкой 0, но все еще не работает.я попытался принудительно заставить его использовать строку (string) $ paramapi и изменить значение регистра на регистр '1' и все еще не работать.я также попытался передать его в целое число с (целое число) $ paramapi и (int) $ paramapi, в то время как дело 1 и все еще не работает правильно.

обратите внимание, что моя переменная swich остается неизменной на каждом ...

    $paramapi = trim($parraya[1]);
    $paramid = trim($parraya[2]);
    $param1 = trim($parraya[3]);
    ...
    $paramapi=settype($paramapi,"string");
        switch($paramapi){
            case '1':
                $param1 = $param1."%";
                $db = new DbOperation();
                $result = $db->addLogin(
                    $paramid,
                    $param1
                );
                if($result){
                    $response['error'] = false; 
                    $response['message'] = 'login success';
                }else{
                    $response['error'] = true; 
                    $response['message'] = 'login failed';
                }
            break;
            case '2':
            ...         
            break;

            case '3':
            ...
            break;

            case '4':
            ...
            break;

            case '5':
            ...
            break;

            case '6':
            ...
            break;

            case '7':
            ...
            break;

            default:
                $response['error'] = true; 
                $response['message'] = 'Invalid API Call'.' '.$aparraya[1];    
    }

я получил "Недопустимый вызов API 1" и хочу получить "вход в систему успешен" или "вход в систему не выполнен"

я изменяю $paramapi=settype($paramapi,"string"); на settype($paramapi,"string"); это исправляет некоторую новую ошибку, котораяя нашел при форсировании моего значения в строку.я также изменил

default:
    $response['error'] = true; 
    $response['message'] = 'Invalid API Call'.' '.$aparraya[1];    
}

на

default:
    $response['error'] = true; 
    $response['message'] = 'Invalid API Call'.' '.$paramapi;    
}

и все еще получил «недопустимый вызов API 1»

мой код работает сейчас.Оказывается, моя ошибка в том, что я забыл сохранить это.

1 Ответ

0 голосов
/ 24 июня 2019

Функция settype возвращает логическое значение, поэтому $paramapi всегда будет true или false.Вам не нужно помещать результат settype обратно в $paramapi.Это делает это для вас, просто вызывая функцию.

Так что замените $paramapi=settype($paramapi,"string"); на settype($paramapi,"string");, и оно должно работать.

(https://www.php.net/manual/en/function.settype.php)

...