/** * Функция преобразования дробей при умножении */ public function convert_div_in_mult() { $divop = array(); // временный массив // взять дроби for ($i = 0; $i < count($this->childrens); $i++) { if (get_class($this->childrens[$i]) == 'qtype_correctwriting_div_operator') { array_push($divop, $this->childrens[$i]); array_splice($this->childrens, $i, 1); $i--; } } // создать новый if (count($divop) > 1) { $tmp = new qtype_correctwriting_multi_operator(); foreach ($divop as $i => $value) { array_push($tmp->childrens, $value->right); } $newch = new qtype_correctwriting_div_operator(); $newch->left = new qtype_correctwriting_operand("1", 1); $newch->right = $tmp; $newch->calculate_tree_in_string(); $divop = array($newch); } // возвращать в списку сыновей foreach ($divop as $value) { array_push($this->childrens, $value); } }
public function convert($parent) { $this->convert_each_childrens(); $tmp = new qtype_correctwriting_div_operator(); $tmp->left = clone $this->left; $tmp->right = $this->right; $tmp->calculate_tree_in_string(); $newass = new qtype_correctwriting_assign_operator(); $newass->left = $this->left; $newass->right = $tmp; $newass->calculate_tree_in_string(); $this->ptonewchild = $newass; }