Получить сумму от симметричных инициаторов из массива в php?

Итак, у меня есть массив, например, $ arr = «/ 43sdsd555ksldk66sd» 544fdfd «;

Я беру номера, используя preg_match_all '/\d+/', а также array_map('intval', $zni[0]);

Теперь проблема в том, что мне нужно обратить все эти целые, чтобы увидеть, являются ли они симметричными, например, 555 и 66, и получают ли они ИТОГО ИТОГО (всего только симметричные числа)

Я попытался использовать функцию «strrev» и получил симметричные числа, но я не знаю, как поместить их в одно место, ЕСЛИ ОНИ симметричны и вычислить их.

<?php
$numbers = "";

if (isset($_GET['submit']))
{
$numbers = ($_GET['niz']);
preg_match_all('/\d+/', $numbers, $zni);
$numtwo= array_map('intval', $zni[0]);
}

foreach ($numtwo as $num)
{
$reverse = strrev($num);
var_dump($reverse);

if ($num == $reverse)
{
$reverse = "true";
} else {
$reverse = "false";
}
var_dump($reverse);
}

0

Решение

Так как вы уже прошли большую часть пути и все, чего вам не хватало, в основном, это использовать + или же +=Вот простой пример того, как это сделать:

$input = "/43sdsd555ksldk66sd544fdfd";
$total = 0;

preg_match_all('/\d+/', $input, $m);
foreach ($m[0] as $d)
if ($d == strrev($d))
$total += $d;

var_dump($total); // => int(621)

С помощью intval() не является необходимым, поскольку PHP будет неявно приводить между типами по мере необходимости.

В качестве альтернативы вы можете заменить цикл на PHP array_* функции:

$input = "/43sdsd555ksldk66sd544fdfd";

preg_match_all('/\d+/', $input, $m);
$total = array_sum(array_filter($m[0], function ($v) { return $v == strrev($v); }));

var_dump($total); // => int(621)

Здесь мы используем анонимную функцию с array_filter() создать новый массив, который содержит только числа палиндрома из исходных совпадений, которые затем передаются array_sum().

Поэтому все, что нужно для преобразования исходного кода в рабочий пример, это ввести переменную и подвести итог:

<?php
$numbers = "";

if (isset($_GET['submit']))
{
$numbers = ($_GET['niz']);
preg_match_all('/\d+/', $numbers, $zni);
$numtwo= array_map('intval', $zni[0]);
}

$total = 0; // new variable
foreach ($numtwo as $num)
{
$reverse = strrev($num);
var_dump($reverse);

if ($num == $reverse)
{
$reverse = "true";
$total += $num; // sum up
} else {
$reverse = "false";
}
var_dump($reverse);
}

var_dump($total); // => int(621)
0

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

Других решений пока нет …

По вопросам рекламы [email protected]