При преобразовании строки чисел в число с плавающей запятой .. почему я получаю только первую цифру?

#php #string

#php #строка

Вопрос:

Я знаю, что этот вопрос был опубликован ранее. У кого-то была та же проблема, что и у меня, и он исправил ее, исправив свой стиль кодирования. Никаких дополнительных подробностей предоставлено не было. Я использую UTF-8 . Я использую Windows 10 . Ниже приведен мой код и результаты в комментариях. Любая помощь приветствуется.

 $nickp[0] = trim($nickp[0]);
$nickp[1] = trim($nickp[1]);
$nickp[2] = trim($nickp[2]);


echo"<br>";
echo"var dump on nickp";
echo"<br>";
var_dump($nickp);  //      returns array(3) { [0]=> string(459) "15336.50 " [1]=> string(36) "" [2]=> string(0) "" }
echo"<br>";


echo"here is a print r..";
echo"<br>";
print_r($nickp);
echo"<br>";



$nickpf = (float)$nickp;

echo"<br>";
echo"var dump on float nickpf";
echo"<br>";
var_dump($nickpf);  // returns float(1)
echo"<br>";

echo"<br>";
echo"var dump on float nickpf[0]";
echo"<br>";
var_dump($nickpf[0]);  returns NULL
echo"<br>";


echo"just nickpf";
echo"<br>";
echo $nickpf;  // returns 1
echo"<br>";

$nickpf =( $nickpf -13380.50);

echo"just nickpf birth year";
echo"<br>";
echo $nickpf;// returns - 13379.50
echo"<br>";
  

Комментарии:

1. Можете ли вы просто указать значение $nickp в комментарии к приведенному выше вопросу?

2. Кажется, вы спрашиваете, почему (float)$array равно 1. Если это так, см. floatval . Пустые массивы возвращают 0, непустые массивы возвращают 1.

3. 15336.50 — это строка, которую я хочу использовать в качестве числа с плавающей точкой

Ответ №1:

Это то, что вы ищете

 $nickp = ["15336.50", "12312.11", "123123.22"]; // example

$nickp[0] = trim($nickp[0]);
$nickp[1] = trim($nickp[1]);
$nickp[2] = trim($nickp[2]);


echo floatval(preg_replace('/[[:^print:]]/', "", $nickp[0]));
  

Комментарии:

1. интересный floatval($ nickp[0]) возвращает 0, что означает, что у меня есть скрытые символы перед номерами строк.

2. @sonny, вот почему я попросил напечатать результат в моем первом комментарии. Я явно сомневался, когда вы упомянули returns array(3) { [0]=> string(459) "15336.50 " . Я отредактировал свой ответ, проверьте это

3. по-прежнему возвращает 0. В качестве фона стиля есть возврат скрытой строки и другая скрытая фигня, которая может менять цвета.