2013-01-08 3 views
0

좋아요. C#에 익숙하지만 PHP로는 매우 새롭기 때문에 제발 참아주십시오.기존 배열 (php)에서 새 배열 만들기

I가 지금은 수행 할 작업이

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

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

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

처럼 조금 보이는 통해 루프와 2 키 (GavinBob) 및 Bob을 가진 새로운 배열로 끝날 기존 배열 의 값은 2546이고 Gavin의 값은 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를 테스트하는 아주 좋은 링크 감사합니다 .. 내가 가장 잘 이해 하나를 허용하지만 이것은 또한 완벽하게 작동 –