-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で正規表現を使用してそのような値を追加する方法がわかりません。助けてください。

私が期待している出力は、$ ADDED_NEW = 32(つまり、16 + 16)、$ ADDED_OLD = 20(つまり、10 + 10)、および$ ADD_LATER = 24(つまり、12 + 12)です。

4

3 に答える 3

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

于 2012-06-13T05:38:52.980 に答える
0

すべてがADDED_NEW、ADDED_OLD、またはADD_LATERで始まる類似のキーの値を追加したいだけだと思います。これにより、3つのカウンターを作成し、キー内のカウンターと一致させてカウンターに追加できます。

私はPHPについてあまり知りませんが、マニュアルとPythonの知識を使用して、これを集めました。

<?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; }
}
?>
于 2012-06-13T05:26:15.820 に答える
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);

?>
于 2012-06-13T05:45:56.960 に答える