php gmp разбить строку на числа не больше указанного числа - очень большие числа произвольной величины
Primary tabs
предлагаю решение в таком виде ( решение без gmp доступно здесь = http://fkn.ktu10.com/?q=node/4235):
/* ВНИМАНИЕ: так как для данной функции подразумевается возможность работы с очень большими числами, то в ней для арифметических операций будет использовать стадартное php-расширение для работы с такими вот большими числами - php gmp данная функция принимает строку $str из одних цифр и разбивает её на блоки - числа, каждое из которых не больше заданного $n (подразумевается ,что $n должно быть достаточно большим- то есть, вообще говоря больше чем любая цифра - т.е. >9) возвращаемый массив - содержит строки - дабы сохранить совместимость с внешним кодом*/ function get_blocks_array($str, $n) { $rarr = array();// массив чисел (результат) $arr = str_to_arr($str); $block = '';// строка для хранения очередного блока(числа) foreach ($arr as $value) { $block .= $value; // приклеиваем очередной символ if (gmp_cmp($block, $n) > 0) { $block = gmp_div_q($block, 10);// тогда убираем один разряд = $value (делим без остатка) $rarr[] = gmp_strval($block); // добавляем число в массив (в виде строки) $block = ''; // обнуляем блок $block .= $value;// добавляем последний элемент, который не вошёл в предыдущий блок } } if ($block != '') // если что-то осталось $rarr[] = $block; // можно вывести на экран, то что получилось echo "<br> строка = ".$str; echo "<br> n = ".$n; foreach($rarr as $val) { echo '<br>'; echo '<br>'.$val; } return $rarr; }
- Log in to post comments
- 3320 reads