我有一個由PHP中的數組構成的樹形結構,這些樹具有以下結構。從嵌套數組中獲得總和
array(5) {
["guid"]=>
string(32) "bfd08465daebc6a624f81fb38fdcb357"
["name"]=>
string(7) "Activos"
["parent_guid"]=>
string(32) "3caed17eb39d20aa9d409f2e61d457ff"
["suma"]=>
NULL
["children"]=>
array(1) {
[0]=>
array(5) {
["guid"]=>
string(32) "c0227d82bf3926d0517a0cffce66be31"
["name"]=>
string(14) "Current Assets"
["parent_guid"]=>
string(32) "bfd08465daebc6a624f81fb38fdcb357"
["suma"]=>
NULL
["children"]=>
array(3) {
[0]=>
array(5) {
["guid"]=>
string(32) "c7bc90c45a5319a00f8a64c7ae1a5ca9"
["name"]=>
string(16) "Cuenta de ahorro"
["parent_guid"]=>
string(32) "c0227d82bf3926d0517a0cffce66be31"
["suma"]=>
string(11) "111035.3800"
["children"]=>
array(0) {
}
}
[1]=>
array(5) {
["guid"]=>
string(32) "72a3ed3467cfd24671197ad7d7f9bb40"
["name"]=>
string(17) "Cuenta de cheques"
["parent_guid"]=>
string(32) "c0227d82bf3926d0517a0cffce66be31"
["suma"]=>
string(6) "0.0000"
["children"]=>
array(0) {
}
}
如果一個節點有孩子,那麼索引「children」將有一個包含值的嵌套數組。這裏的問題是,如何爲每個給予「guid」的孩子在索引「suma」中總結所有值?
例如,給定guid c7bc90c45a5319a00f8a64c7ae1a5ca9該函數必須返回111035.3800,因爲該子樹沒有子項。但是,對於給定的guid及其相應的孩子,函數必須求和Null + 111035.3800 + 0.0000,這是索引「suma」中的值。如果一個節點有'n'嵌套的子元素,那麼函數應該遍歷所有的子元素並且在索引「suma」中求和該值。
我已經有一個遞歸函數返回給定的GUID值的子樹,但我不知道如何工作的總和。
function getChildrenAccounts($array, $parent_guid)
{
if(!is_array($array))
return null;
if(isset($array['guid']) && $array['guid'] == $parent_guid)
return $array['children'];
foreach ($array as $item) {
$return = $this->getChildrenAccounts($item, $parent_guid);
if (!is_null($return))
return $return;
}
return null;
}
任何幫助,將不勝感激,謝謝
謝謝,只是爲了記錄,我不得不在查詢中使用mySQL函數'COALESCE'來調出樹以避免索引「suma」中的NULL值 – 2012-04-10 03:19:05