2013-01-08 73 views
0

好吧我對C#非常有經驗,但對PHP很新,所以請耐心等待。從現有陣列創建新陣列(php)

我有一個現有的陣列,看起來有點像這樣

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

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

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

現在我想要做的是循環通過,並使用具有2個鍵(GavinBob)和Bob一個新的數組結束的值是2546Gavin的是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; 
} 

我在這裏做錯了什麼?

回答

1

這應該做的伎倆

$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']; 
} 
+0

我發現了一個錯誤「警告:無法使用標量值作爲數組」上線我在哪裏把值放入數組? –

+0

對不起,刪除此行上的[](請參閱編輯) –

+0

啊,明白了..完美地工作,謝謝 –

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

+0

這是一個非常不錯的鏈接來測試PHP謝謝..我接受了一個我瞭解最好的,但是這也工作完美 –