Php конвертирует строковое представление в правильный тип - PullRequest
0 голосов
/ 25 июня 2019

Например, у меня есть список строк вроде этой ["889003521", "level5", "120", "1.1", "500", "10", "false"], и мне нужно преобразовать каждый элемент в реальный тип, например [889003521. "level5", 120, 1.1, 500, 10, false], каков наилучший способ добиться этого?Спасибо.

Обновлено: @ 04FS Я нашел способ сделать конвертацию для int / float, но не уверен, что это лучший способ

      if (is_numeric($value)) {
            $floatVal = floatval($value);

            if($floatVal && intval($floatVal) != $floatVal){
                return $floatVal;
            }

            return (int)$value;
        }

, но не уверенкак преобразовать в логическое значение.

1 Ответ

1 голос
/ 25 июня 2019

Вы можете использовать json_decode для этого. Имейте в виду, что для строки она может возвращать ноль при декодировании, поэтому мы проверяем, не является ли преобразованное значение нулевым.

        $arr = ["889003521", "level5", "120", "1.1", "500", "10", "false"];
        $ret = [];

        foreach($arr as $val) {
            $converted = \json_decode($val);
            $ret[] = $converted ?? $val;
        }

И это содержимое массива $ ret:

0 = {int} 889003521
1 = "level5"
2 = {int} 120
3 = {float} 1.1
4 = {int} 500
5 = {int} 10
6 = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...