У меня есть структура данных, похожая на приведенную ниже (только больше, это фрагмент).Я пытаюсь сгенерировать сумму всех значений суммы TechnologyIncentive
в формате USD.Set::extract
кажется естественным способом сделать это быстро и легко, но я буду проклят, если смогу сделать это так, как я думаю.Я знаю, Set::extract
поддерживает только подмножество XPath, но я думаю, что я работаю в этом контексте.Я пробовал
Set::extract( '/' . $group . '/IncentiveAmountType[incentive_amount_type_id=USD]/../TechnologyIncentive/amount', $incentives )
Set::extract( '/' . $group . '/{n}/IncentiveAmountType[incentive_amount_type_id=USD]/../TechnologyIncentive/amount', $incentives )
Значение $group
оценивается как "Appliances" или "Building Shell" в структуре ниже.Другие группы существуют в не сокращенной версии структуры данных.Я мог понять, что это путается с пробелом в "Building Shell", но он даже не работает для "Appliances".Я надеюсь, что у меня просто что-то не так, что я потерял способность видеть.
Идея состоит в том, чтобы получить массив значений, а затем бросить array_sum()
, чтобы получить общие значения для каждой группы.
Спасибо за вашу помощь.Структура данных, с которой я работаю, выглядит следующим образом ...
Array
(
[Appliances] => Array
(
[875] => Array
(
[TechnologyIncentive] => Array
(
[id] => 875
[incentive_id] => ccf4ceb8-6538-11e0-9cbb-00259028905a
[technology_id] => d4da5c6a-6538-11e0-9cbb-00259028905a
[amount] => 75.00
[incentive_amount_type_id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[is_active] => 1
)
[IncentiveAmountType] => Array
(
[id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[incentive_amount_type_id] => USD
[name] => $
[description] => US Dollars
[version] => 0
[display] => 1
)
)
[1103] => Array
(
[TechnologyIncentive] => Array
(
[id] => 1103
[incentive_id] => ccf4c9b8-6538-11e0-9cbb-00259028905a
[technology_id] => d4da5c6a-6538-11e0-9cbb-00259028905a
[amount] => 50.00
[incentive_amount_type_id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[is_active] => 1
)
[IncentiveAmountType] => Array
(
[id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[incentive_amount_type_id] => USD
[name] => $
[description] => US Dollars
[version] => 0
[display] => 1
)
)
)
[Building Shell] => Array
(
[1110] => Array
(
[TechnologyIncentive] => Array
(
[id] => 1110
[incentive_id] => ccf4c9b8-6538-11e0-9cbb-00259028905a
[technology_id] => d4d9b79c-6538-11e0-9cbb-00259028905a
[amount] => 150.00
[incentive_amount_type_id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[is_active] => 1
)
[IncentiveAmountType] => Array
(
[id] => 0fb78496-6ad6-11e0-9cbb-00259028905a
[incentive_amount_type_id] => USD
[name] => $
[description] => US Dollars
[version] => 0
[display] => 1
)
)
[10941] => Array
(
[TechnologyIncentive] => Array
(
[id] => 10941
[incentive_id] => ccf4ceb8-6538-11e0-9cbb-00259028905a
[technology_id] => d4d9b79c-6538-11e0-9cbb-00259028905a
[amount] => 40.00
[incentive_amount_type_id] => 0fb783c4-6ad6-11e0-9cbb-00259028905a
[is_active] => 1
)
[IncentiveAmountType] => Array
(
[id] => 0fb783c4-6ad6-11e0-9cbb-00259028905a
[incentive_amount_type_id] => PERC
[name] => %
[description] => Percent
[version] => 0
[display] => 1
)
)
)
)