2015-04-26 3 views
2

Вот мой сценарий:Sum элементы из массива

<?php 
    $failas = fopen("info.txt", "r"); 
    while (!feof($failas)){ 
     $d = fgets($failas); 
     $dExploded = explode ("|", $d); 
     list($dDate, $dTime) = explode(" ", $dExploded[substr_count($d, "|")]); 
     $metmen[] = implode('-', explode('-', $dDate, -1)); 
     if(preg_match_all('/[|]\d+[|]/', $d, $match)){ 
      $numbers[] = implode('', $match[0]); 
     } 
    } 
    fclose($failas); 
    foreach ($numbers as $key=>$value) 
    { 
     $naujas[$key] = $metmen[$key] . $numbers[$key]; 
     print $naujas[$key] . "<br>"; 
    } 
?> 

Вывод этого сценария:

2015-04|500| 
2015-04|1200| 
2015-04|1000| 
2015-04|1500| 
2015-04|3400| 
2015-03|1500| 
2015-02|1500| 
2015-03|3000| 

Я не знаю, как просуммировать же месяц | число | номера. Маби, ты можешь мне помочь?

+0

Что вы пытаетесь сделать? –

+0

У меня нет идеи, как суммировать один и тот же месяц | число | числа, которые вы можете видеть в результате: – Albance

+0

создать массив с «месяцем» в качестве ключа, а при циклизации над вашими данными добавить «номер» к этому массиву. – Sean

ответ

0

Самых простой способ сделать это, чтобы создать массив, с месяцем является кнопочным

$months = array(); 
foreach ($numbers as $key=>$value) 
{ 
    $month = rtrim("|",$metmen[$key]); 
    $number = rtrim("|",$numbers[$key]); 
    $months[$month] = isset($months[$month]) ? $months[$month]+$number : $number; 
} 
//print each month/sum 
foreach($months as $month=>$number){ 
    print $month.' - '.$number . "<br>"; 
} 
1

Попробуйте это:

$arr = array(
'2015-04|500|', 
'2015-04|1200|', 
'2015-04|1000|', 
'2015-04|1500|', 
'2015-04|3400|', 
'2015-03|1500|', 
'2015-02|1500|', 
'2015-03|3000|'); 
$st = preg_replace('/[0-9]{4}\-[0-9]{2}\||\|/','',$arr); 
echo array_sum($st); 

Если вам нужно Суммы на год-месяц:

$arr = array(
'2015-04|500|', 
'2015-04|1200|', 
'2015-04|1000|', 
'2015-04|1500|', 
'2015-04|3400|', 
'2015-03|1500|', 
'2015-02|1500|', 
'2015-03|3000|'); 

$sub = array(); 
foreach($arr as $k=>$v) 
{ 
    $value = preg_replace('/[0-9]{4}\-[0-9]{2}\||\|/','',$v); 
    $key = str_replace('|'.$value.'|','',$v); 
    $sub[$key][] = $value; 
} 

print_r($sub); 
echo array_sum($sub['2015-04']); 
+0

Я знаю, как разделить и суммировать. Но мне нужно суммировать только те цифры, которые относятся к тому же месяцу. 2015-03 | 1500 | 2015-03 | 3000 | 2015-03 - 4500 – Albance

+0

@Albance use loop – mcklayin

+0

@mcklayin, так ответ правильный? –

Смежные вопросы