Увеличить на 1 числа в строке?

Здравствуйте!
Есть строка: 2-3.
Требуется прибавить к числам +1.
Подскажите как более эффективнее сделать, если учесть что строка может состоять из 2-3, или просто из одной цифры 2.
Заранее благодарен!

Сделал в итоге так:

$exlode1 = explode("-", $days);

    	for ($i=0; $i <count($exlode1) ; $i++) { 
    		
    		$arr[] = $exlode1[$i]+1;

    	}

    	return implode('-', $arr);
  • Вопрос задан
  • 1103 просмотра
Решения вопроса 1
@arab789
Строку прогоняешь через:
explode($str);
Затем в полученном массиве проверяем кол-во элементов:
count($arr);
И циклом for (на основе кол-ва эл) проходим по массиву и прибавляем 1 к каждому элементу.

Или без учета кол-ва элементов циклом foreach.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
IgorO2
@IgorO2
73
echo preg_replace_callback("/(\d+)/", function ($matches) { return ($matches[1]+1); }, '2-3-4-3');
Ответ написан
Комментировать
@IceJOKER
Web/Android developer
explode() + array_map() - универсальный вариант

если строка имеет вид "2-3" или "2", то:
$str = '2-3';
$final_str = '';
$explode = explode('-', $str);
$final_str = ++$explode[0];
if(array_key_exists(1, $explode)) $final_str .= '-'.++$explode[1];

var_dump($final_str);


а если строка может иметь вид 2-3-4...., то:
$str = '2-3-5-6';
$final_str = '';
$explode = explode('-', $str);
$final_explode = array_map(function($n) {return ++$n;}, $explode);

$final_str = implode('-', $final_explode);
var_dump($final_str);
Ответ написан
@Ramallah
А я регулярки люблю )

<?php

$inputString = '1-2-45-36-45';

$result = preg_replace_callback(
    '/(\d+)/',
    function ($matches) {
        return $matches[0]+1;
    },
    $inputString
);

echo $result; // OUT 2-3-46-37-46
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы