вот мой массив данныхPHP рекурсивный цикл с суммой
$datas = array(
'1'=>array('id'=>1,'parent'=>0,'name'=>'Page 1','x'=>1,'y'=>7, 'sumX'=>1),
'2'=>array('id'=>2,'parent'=>1,'name'=>'Page 1.1','x'=>3,'y'=>7, 'sumX'=>4),
'3'=>array('id'=>3,'parent'=>2,'name'=>'Page 1.1.1','x'=>1,'y'=>5, 'sumX'=>5),
'4'=>array('id'=>4,'parent'=>3,'name'=>'Page 1.1.1.1','x'=>4,'y'=>7, 'sumX'=>11),
'5'=>array('id'=>5,'parent'=>3,'name'=>'Page 1.1.1.2','x'=>1,'y'=>7, 'sumX'=>6),
'6'=>array('id'=>6,'parent'=>1,'name'=>'Page 1.2','x'=>1,'y'=>7, 'sumX'=>2),
'7'=>array('id'=>7,'parent'=>6,'name'=>'Page 1.2.1','x'=>1,'y'=>7, 'sumX'=>3),
'8'=>array('id'=>8,'parent'=>0,'name'=>'Page 2','x'=>1,'y'=>7, 'sumX'=>1),
'9'=>array('id'=>9,'parent'=>0,'name'=>'Page 3','x'=>1,'y'=>5, 'sumX'=>1),
'10'=>array('id'=>10,'parent'=>9,'name'=>'Page 3.1','x'=>1,'y'=>7,'sumX'=>2),
'11'=>array('id'=>11,'parent'=>9,'name'=>'Page 3.2','x'=>4,'y'=>7, 'sumX'=>5),
'12'=>array('id'=>12,'parent'=>11,'name'=>'Page 3.2.1','x'=>1,'y'=>7, 'sumX'=>6)
);
SumX значение, которое я хочу, чтобы иметь возможность рассчитать (я жёстко его, чтобы показать, что я хочу). SumX представляет собой сумму текущего значения x элемента x и всех родителей.
текущий код я работаю с здесь()
foreach ($datas as $id => &$data){
$parentId = $data['parent'];
while ($parentId && isset($datas[$parentId])){
$parentData = &$datas[$parentId];
$parentData["childrenCount"]++;
$parentData["SumXCACULATED"] += $data["x"];
// $parentData["SumXCACULATED"] = $data["x"] + $data[$id-1]["SumXCACULATED"];
$parentId = $parentData['parent'];
}
$data["SumXCACULATED"] += $data["x"];
}
производит значение «обратной»
ОК, в этом заключается проблема. Вы явно указываете, что ваш желаемый результат для 'x' должен быть' 2' для 'Page 1.1', но затем вы указываете, что' x' должно быть '3' для' Page 1.1'. Что он? Я не могу удовлетворить противоречивые требования, теперь я могу? – Sherif
Это действительно не так. Желаемый результат не соответствует вашему описанию требований. Поэтому я понятия не имею, что вы хотите. Вы говорите две разные вещи. Попробуйте упростить свои требования. Сейчас вы находитесь в [XY проблема] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – Sherif
Извините, это просто непонятно, о чем вы спрашиваете. Вы говорите, что хотите две разные вещи, и теперь вы говорите, что хотите третью вещь. Ничто не складывается для меня. Я не знаю, как вам помочь. Сумма родителей не '3' в' Page 1.1' в соответствии с вашим вводом. Чем больше вы добавляете, тем меньше ощущается все это. – Sherif