Суммирование чисел в PHP: руководство по извлечению и добавлению числовых значений из строк

В PHP часто встречаются ситуации, когда вам необходимо извлечь числа из строки и выполнить с ними математические операции. Независимо от того, работаете ли вы с пользовательским вводом, анализируете данные из файла или манипулируете строками, извлечение и суммирование чисел может оказаться полезным навыком. В этой статье мы рассмотрим несколько методов выполнения этой задачи, дополненные разговорными объяснениями и примерами кода.

Метод 1: регулярные выражения
Регулярные выражения — это мощный инструмент для сопоставления с образцом и извлечения определенных данных из строк. В PHP вы можете использовать функцию preg_match_all вместе с шаблоном регулярного выражения для извлечения всех чисел из заданной строки. Вот пример:

$string = "I have 10 apples, 5 bananas, and 3 oranges.";
preg_match_all('/\d+/', $string, $matches);
$numbers = $matches[0];
$sum = array_sum($numbers);
echo "The sum is: " . $sum;

Объяснение: Мы определяем шаблон регулярного выражения \d+, который соответствует одной или нескольким цифрам. Функция preg_match_allищет все вхождения этого шаблона в строке и сохраняет их в массиве $matches. Затем мы вычисляем сумму извлеченных чисел, используя array_sum, и отображаем результат.

Метод 2: разнесение и цикл
Другой подход — разделить строку на массив слов с помощью функции explode, а затем перебрать каждое слово, чтобы проверить, является ли оно числом. Если да, то прибавляем его к текущей сумме. Вот пример:

$string = "This is a string with 42 and 99 in it.";
$words = explode(" ", $string);
$sum = 0;
foreach ($words as $word) {
    if (is_numeric($word)) {
        $sum += (int)$word;
    }
}
echo "The sum is: " . $sum;

Объяснение: мы используем explode, чтобы разделить строку на массив слов. Затем в цикле мы проверяем, является ли каждое слово числовым, используя is_numeric. Если это так, мы приводим его к целому числу и добавляем его к сумме. Наконец, мы отображаем общую сумму.

Метод 3: использование sscanf
Функция sscanfв PHP позволяет нам анализировать входные данные в соответствии с указанным форматом. Мы можем использовать эту функцию для извлечения чисел из строки. Рассмотрим следующий пример:

$string = "The total is 123.45, and the discount is 10%.";
$number = sscanf($string, "%f");
$sum = array_sum($number);
echo "The sum is: " . $sum;

Объяснение: мы используем %fв качестве спецификатора формата в sscanf, который соответствует числу с плавающей запятой. Функция возвращает массив с извлеченными числами, и мы вычисляем сумму, используя array_sum. Наконец, мы отображаем сумму.