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's 的值是2546while Gavin's 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 回答