Привести строку к целому в PHP

1

Я пытаюсь преобразовать строку в int в PHP, чтобы работать на ней, но PHP продолжает интерпретировать ее как 0.

var_dump ($Pux); // output: string (6) "89"

Я пробовал несколько способов:

(int) $Pux,
intval($Pux)
settype($Pux, "integer")

Но все они дают мне 0 вместо 89.

Как это сделать?

  • 5
    почему расстояние между $ и Pux ?
  • 0
    Ой, виноват редактор: P (в коде недостаточно места) Я его отредактирую, спасибо
Показать ещё 10 комментариев
Теги:
string
casting
int

6 ответов

1

Нет проблем, если вы не помещаете пробелы между $ и varname и присваиваете результат приведения переменной.

<?php 
    $Pux = "89";
    var_dump ($Pux);
    $t = (int)$Pux;
    var_dump ($t);
?>

Выход =

string(2) "89"
int(89)
  • 1
    Посмотрите, что 6 из var_dump() : string (6) "89" . Там, вероятно, есть некоторые html-теги или скрытые символы, что может быть причиной неудачи.
  • 0
    Ммммм, это звучит возможно.
Показать ещё 3 комментария
0

У меня была такая же ошибка. Действительно, когда я сделал var_dump ($ myvar). он возвращает строку (2) "89", и когда я делал все изменения бросков, они возвращали мне 0. Я ищу и, наконец, ответ на этой странице. Поэтому я поделился с вами тем, что узнал. Вам нужно только сделать регулярное выражение: $ myvar = preg_replace ("/[^ 0-9,.]", "", $ Myvar). Он удаляет все не номера в вашей строке (в моем случае строка (2)).

  • 0
    Я пропустил / в конце концов регулярное выражение $ myvar = preg_replace ("/ [^ 0-9,.] /", "", $ Myvar)
0

Самый простой способ преобразования строки в число: -

<?php
$Pux = "89"; // Or any other number
$Num = (int) $pux;
?>

Если вы все равно получаете нуль, может быть несколько странных, невидимых символов перед номером. Чтобы проверить это: -

echo "($ Pux)";

  • 0
    Вы справляетесь с переменной чувствительностью к регистру справа
  • 0
    OP прокомментировал пробел между $ и Pux которого нет в реальном коде
Показать ещё 2 комментария
0

В приведенном ниже коде удаляются нецифровые символы ::

function numeric( $st_data )
    {
        $st_data = preg_replace("([[:punct:]]|[[:alpha:]]| )",'',$st_data);
        return $st_data;    
    }
  • 0
    Оно работает !!!! Спасибо!!!
  • 1
    Лучше использовать \ D или [^ 0-9] для поиска, так как это соответствует всем не цифрам.
0

Вы можете преобразовать строку в целое число двумя способами:

Типичная или интуитивная функция

<?php
 $pux = "89";
 var_dump($pux);
 $pux = (int) $pux;
 var_dump($pux);
 $pux = "89";
 $pux =  intval($pux);
 var_dump($pux);
?>
0

Как var_dump($Pux); выводит string(6) "89" (не string(2)), это означает, что ваша строка содержит 6 символов, я думаю, что они являются четырьмя скобками (') и 89. Поэтому попробуйте удалить скобки из строки:

$Pux = str_replace("'", '', $Pux);

или удалить двойные скобки (для безопасного)

$Pux = strtr($Pux, array("'" => '', '"' => ''));

РЕДАКТИРОВАНИЕ

будет полезно удалить все не числовые значения:

$Pux = preg_replace("/[^0-9,.]/", "", $Pux);

а затем преобразовать в целое число.

Благодарю.

  • 0
    $ PUx = strtr ($ PUx, массив ("'" =>' ',' "'=>' ')); $ aux = intval ($ PUx); var_dump ($ aux); вывод: int (0)
  • 0
    @ManuelRamos, что возвращает: $ PUx = strtr ($ PUx, массив ("'" =>' ',' "'=>' ')); var_dump ($ PUx);?
Показать ещё 8 комментариев

Ещё вопросы

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