0

私は次の方法で配列に数値を格納します:
467:0
ここで、467 は数値、0 は出現回数です。

やっているのは、データベースから一連の数字を取得し、出現回数を増やしている場合は、複数回出現する数字を探すことです。

$numberCount = explode(':', $this->_presentationArr);

    if(in_array($numberprefix  . ':' . preg_match('/^\d+$/', $numberCount[1]), $this->_presentationArr))
    {

        $pos = array_search($numberprefix  . ':' . preg_match('/^\d+$/', $numberCount[1]), $this->_presentationArr);
        $tmpArr = explode(':', $this->_presentationArr[$pos]);
        $tmpArr[1]++; # this does not work


    }


$tmpArr[1] は、一致ごとにインクリメントする必要がある数です。何か案は?

4

1 に答える 1

0

あなたは物事を複雑にしすぎていると思います。PHP の配列は、たとえば C の配列とは少し異なり、マップのように動作します。つまり、前のキーが実際に存在するかどうかを気にせずにキーを挿入できます。これは、次のように、頻度マップを簡単かつ迅速に作成できることを意味します。

$occurrencearray = array()
// this next line is pseudocode
while ($fetched = fetchnumber()) {
    $occurrencearray[$fetched]++;
}
// once all numbers loaded you can iterate over your occurrence map
foreach ($occurrencearray as $key => $value) {
    printf("Number %d occurs %d times",$key,$value);
    // or of course reconvert it to "key:value" strings for storing
}
于 2013-07-15T08:51:14.167 に答える