Рабочие значения в строке

У меня есть это в PHP:

$arreglo = array('128 gigas', '250 gigas', '220 gigas');
foreach ($arreglo as $key => $value) {

}

Можно ли управлять этими значениями в строке? как 128 + 250 + 220, используя foreach?
Заранее спасибо.

1

Решение

используйте следующий код:

$arreglo = array('128 gigas', '250 gigas', '220 gigas');
$arr = array();
$i = 0;
foreach ($arreglo as $key => $value)
{
$expVal = explode(" ",$vaulue);
$arr[$i] = $expVal[0]; //this array contains all your numbers 128, 250 etc
}
$sum = 0;
foreach($arr[$i] as $num)
{
$sum = $sum+$num
}
echo $sum; // your final sum result is here
0

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

Вы можете сделать с основными функциями PHP:

взорваться ()

лопаются ()

str_replace ()

Рабочий пример:

<?php
$arreglo = array('128 gigas', '250 gigas', '220 gigas');
$str = implode(',', $arreglo);
$str = str_replace(' gigas', '', $str);
$n = explode(',', $str);
$count = array_sum($n);
echo $count; // Outouts 598
?>
0

Если между цифрами и буквами всегда есть пробел, вы можете сделать это

$arreglo = array('128 gigas', '250 gigas', '220 gigas');
$total = 0;
foreach ($arreglo as $value) {
$total += strstr($value, " ", true);
}
echo "Total : $total"; // int(598)
0

Попробуй это…

<?php
$total=0;
$arreglo = array('128 gigas', '250 gigas', '220 gigas');
foreach ($arreglo as $key => $value) {
$total +=intval(preg_replace('/[^0-9]+/', '', $value), 10);
}
echo $total;
?>

Демо-версия:https://eval.in/463363

0

Если строки всегда следуют этому формату, тогда да. Вы можете взорвать строки в массивы:

$a = explode(' ', $string); // Now $a[0] contains the number

Итак, для вашего кода:

$arreglo = array('128 gigas', '250 gigas', '220 gigas');
$total = 0;
foreach ($arreglo as $value) { // $key not necessary in this case
$a = explode(' ', $value);
$total += $a[0]; // PHP will take care of the type conversion
}

Или, если вы чувствуете себя креативно:

$func = function($s) {
$a = explode(' ', $s);
return $a[0];
};

$arreglo = array('128 gigas', '250 gigas', '220 gigas');
$numbers = array_map($func, $arreglo);
$total = array_sum($numbers);
0

Вы можете сделать это с помощью array_map () ,str_replace () а также array_sum ()

Рабочий пример:

<?php
$data = array('128 gigas', '250 gigas', '220 gigas');
$data = array_map(function($value) { return str_replace(' gigas', '', $value); }, $data);
echo array_sum($data);
?>

Смотрите это вживую здесь

Объяснение:

1) У вас есть массив со строковыми значениями. Эти значения также содержат числа.

2) Вам нужно сложить все числа.

3) Использование array_map() заменить все нечисловые символы из строки, используя str_replace(),

4) Теперь используйте array_sum () для суммирования итогов.

0

Вы можете просто использовать функцию floatval () php, чтобы получить значение типа float из строки. Надеюсь это поможет.

$arreglo = array('128 gigas', '250 gigas', '220 gigas');

$sum=0;
foreach( $arreglo as $value ){
$sum += floatval($value);
}

print $sum;
0

Если вы хотите встроенный код

echo array_sum(str_replace(" gigas","",$arreglo));
0
По вопросам рекламы [email protected]