Ну, я не знаю, насколько велик этот массив или каков фактор производительности.Но это очень специфично, и я осмелюсь рекомендовать наивный прямой процедурный подход:
<?
$result = array();
foreach($arr as $a) {
$result[$a[0]] += $result[$a[1]];
}
?>
это вызовет некоторое php-предупреждение, потому что поле еще не установлено, поэтому вам, вероятно, нужно сделать что-то вроде проверкиключ существует, и если не установить его значение, и, если оно есть, добавить значение ...
edit: хорошо, давайте опубликуем это, это может выглядеть как
<?
$result = array();
foreach($arr as $a) {
if(isset($result[$a[0]])) {
$result[$a[0]] += $result[$a[1]];
} else {
$result[$a[0]] = $result[$a[1]];
}
}
?>