2012-06-13 6 views
-3

다음과 같은 배열이 있고 ADDED_NEW _ (. *) {일반 표현식}의 모든 값 및 이와 유사한 다른 값을 특정 방식으로 총계하고 싶습니다. ADDED_NEW, ADDED_OLD 및 ADD_LATER와 같은 특정 값만 있습니다.내 배열 값 합계

$stats = Array 
(
    [ADDED_NEW_2012_06_12] => 16 
    [ADDED_OLD_2012_06_12] => 10 
    [ADD_LATER_2012_06_12] => 12 
    [ADDED_NEW_2012_06_11] => 16 
    [ADDED_OLD_2012_06_11] => 10 
    [ADD_LATER_2012_06_11] => 12 
) 

당신은 내가 내 결과를 얻을 수있는 방법을 말해 주시겠습니까 : 같은

내 배열입니다. PHP에서 regex를 사용하여 이러한 값을 추가하는 방법을 모르겠습니다. 도와주세요.

내가 기대하고 출력은 $가 ADDED_NEW = 32 (즉, + 16 (16)), $는 ADDED_OLD = 20 (즉 10 + 10)와 $ ADD_LATER = 24 (즉, 12 + 12)

+2

Could'nt 매우 얻을이 => VAL1 _ {정규 표현식} (*.)? 이게 무슨 뜻이야? – verisimilitude

+0

구체적으로 어떤 텍스트를 찾으시겠습니까? –

+0

질문의 명확성이 부족합니다. 현장을 설명 할 시간을 찾는다. – mithunsatheesh

답변

0

나는 당신을 믿습니다 모두가 ADDED_NEW 또는 ADDED_OLD 또는 ADD_LATER로 시작하는 비슷한 키의 값을 추가하려고합니다. 그래서 우리는 단지 3 개의 카운터를 만들고 그 키의 값을 일치시키고 카운터에 추가 할 수 있다고 가정합니다.

나는 많은 PHP하지만, 사용 설명서 및 파이썬에서 내 지식을 모르는, 이것은 I가 소집 것입니다 :

<?php 
$ADDED_NEW = 0; 
$ADDED_OLD = 0; 
$ADD_LATER = 0; 
foreach ($stats as $key => $value) { 
    if (preg_match("ADDED_NEW_.*", $key)) { $ADDED_NEW += $value; } 
    if (preg_match("ADDED_OLD_.*", $key)) { $ADDED_OLD += $value; } 
    if (preg_match("ADD_LATER_.*", $key)) { $ADD_LATER += $value; } 
} 
?> 
+0

에 오류가 표시됩니다. ADDED_NEW = 0; ADDED_OLD = 0; ADD_LATER = 0; 그리고 조건이 좋을 경우 – Thompson

+0

LOL 죄송합니다. $ signs을 잊어 버렸습니다.) (PHP XD에 대해 많이 알지 못했습니다.) – richardhsu

+0

하지만 변수가 아닙니다. 그들은 배열에 있습니다 – Thompson

0

체크 이것을.

<?php 



    $stats = array(
    'ADDED_NEW_2012_06_12' => 16, 
    'ADDED_OLD_2012_06_12' => 10, 
    'ADD_LATER_2012_06_12' => 12, 
    'ADDED_NEW_2012_06_11' => 16, 
    'ADDED_OLD_2012_06_11' => 10, 
    'ADD_LATER_2012_06_11' => 12 
); 
    $ADDED_NEW = 0; 
    $ADDED_OLD = 0; 
    $ADD_LATER = 0; 
    foreach ($stats as $key => $value) { 
     if (preg_match("/ADDED_NEW_.*/", $key)) { $ADDED_NEW += $value; } 
     else if (preg_match("/ADDED_OLD_.*/", $key)) { $ADDED_OLD += $value; } 
     else if (preg_match("/ADD_LATER_.*/", $key)) { $ADD_LATER += $value; } 
    } 

echo "$ADDED_NEW - $ADDED_OLD - $ADD_LATER"; 

?> 

출력 : (32) - 20-24

+0

고마워요. – Thompson

0

이 시도 :

<?php 

$stats = array 
(
    "ADDED_NEW_2012_06_12" => 16, 
    "ADDED_OLD_2012_06_12" => 10, 
    "ADD_LATER_2012_06_12" => 12, 
    "ADDED_NEW_2012_06_11" => 16, 
    "ADDED_OLD_2012_06_11" => 10, 
    "ADD_LATER_2012_06_11" => 12, 
); 

$accumulators = array 
(
    "ADDED_NEW" => 0, 
    "ADDED_OLD" => 0, 
    "ADD_LATER" => 0, 
); 

foreach($stats as $key => $value) 
{ 
    foreach(array_keys($accumulators) as $accumulator) 
    { 
     if(preg_match("@^${accumulator}@m", $key)){$accumulators[$accumulator] += $value;} 
    } 
} 

header('Content-Type: text/plain'); 
print_r($accumulators); 

?>