0

私は C# の経験は豊富ですが、PHP は初めてなので、ご容赦ください。

このような既存の配列があります

Array
(
[0] => Array
    (
        [author] => Gavin
        [weighting] => 2743
    )

[1] => Array
    (
        [author] => Bob
        [weighting] => 2546
    )

[2] => Array
    (
        [author] => Gavin
        [weighting] => 2227
    )
)

今私がやりたいことは、それをループして、2 つのキー ( Gavinand Bob) を持ち、Bob値が2546whileGavinの isである新しい配列で終わることです4970

現在、ほぼ機能するこれがありますが、最後の作成者が重複した値を取得し、並べ替えることができませんか?

if (array_key_exists($authorName, $Authors)) {
    foreach ($Authors as $key_name => &$key_value) {
        if ($key_name == $authorName)
        {
                $key_value = $key_value + $weight;
        }
    }
}
else {
    $Authors[$authorName] = $weight;
}

ここで何が間違っていますか?

4

2 に答える 2

2

これでうまくいくはずです

$newarray = array();
foreach($yourarray as $a) {
    //create array if not created
    if(!isset($newarray[$a['author']])) {
        $newarray[$a['author']] = 0;
    }
    //put value in array
    $newarray[$a['author']] += $a['weighting'];
}
于 2013-01-08T18:12:23.843 に答える
0
$Authors = array();

foreach($array as $entry) {
    if ( array_key_exists($entry['author'], $Authors) ) {
        $Authors[ $entry['author'] ] += $entry['weighting'];
    } else {
        $Authors[ $entry['author'] ] = $entry['weighting'];
    }
}

ここで実際に見てください:http://codepad.viper-7.com/LUx1r5

于 2013-01-08T18:13:46.343 に答える