string — count_chars в PHP, где количество символов превышает 16

Так по какой-то причине, когда я использую count_chars(11111111111111111111,3) Я возвращаю что-то с эффектом .1111111111111119

Есть ли другой способ подсчета случаев каждого символа в строке?

Вот пример кода

            $value = 11111111111111111111;
$value = strval($value);
$count = count_chars($value,3);
print_r($count);

Если я распечатываю результат, я получаю + .012E

0

Решение

Если вы хотите посчитать символы в строка, дать строка

count_chars('11111111111111111111',3)

PS: и если вы действительно хотите считать символы, используйте режим 1

 $res = count_chars('1111111111111111111122333', 1);

foreach ($res as $char => $number) {
echo chr($char). ' ' . $number .'<br />';
}
1

Другие решения

Проблема в том, что вы используете не целые числа, а числа с плавающей запятой.
А с такими большими поплавками они будут показаны научным способом (с E).

Так 11111111111111111111 становится 1.1111111111111E+19 (в математике это то же самое число).
Если вы преобразуете его в строку (приведение, strval()), здесь будет второй.
И потому что у вас будет 1.1111111111111E+19 в виде строки вы получите результат, который вы нам дадите.

Решение этого? У вас есть несколько, но они не так хороши.
Лучший способ думать, это использовать number_format функция:

$value = number_format($value, 0, '', '');

Вместо этого, если strval() функция.

Большая проблема здесь в том, что с плавающей точкой недостаточно для этого. Вы получите проблемы с округлением. Смотрите больше информации Вот.

На моем компьютере строка станет 11111111111111110656 потому что он округляется до 1111111111111111.0656,

Если вы знаете длину целого числа (16 в данном случае), вы можете использовать substr() для этого, но снова: это будет только обходной путь.

0