如何在PHP公共函数中返回switch case计算器的平方根计算结果
PHP计算器平方根功能修复方案
核心问题1:racine方法参数定义不匹配
你定义racine方法时声明了2个入参$left和$right,但在√对应的分支中调用该方法时仅传入了1个参数,PHP会触发参数缺失的致命错误,导致功能无法正常返回结果。
修复代码:
// 原错误写法 public function racine($left, $right){ return (int)sqrt($left); } // 修正后写法 public function racine($left){ // 若不需要强制取整,可去掉(int)保留浮点精度 return (int)sqrt($left); }
核心问题2:平方根运算符匹配逻辑错误
你现有switch分支判断的是$array[1]作为运算符,该逻辑仅适配a+b这类「左操作数+运算符+右操作数」的双操作数运算格式。而平方根是单操作数运算,常规写法为√x,运算符在第一个位置,输入√9拆分后数组为['√','9'],$array[1]是数字9,根本无法命中√的分支。
两种修复方案二选一:
- 方案1:调整输入规则,适配现有逻辑
统一将平方根的输入格式改为「操作数+运算符」,比如要计算9的平方根就输入9√,无需修改其他代码即可直接运行。 - 方案2:修改运算逻辑,兼容单操作数运算符
调整operation方法的判断逻辑,优先识别平方根运算符:public function operation($array){ // 优先匹配单操作数的平方根运算 if ($array[0] == '√') { return $this->racine($array[1]); } // 原有双操作数运算逻辑保持不变 switch ($array[1]) { case "+": return $this->addition($array[0], $array[2]); case "-": return $this->soustraction($array[0], $array[2]); case "*": return $this->multiplication($array[0], $array[2]); case "/": return $this->division($array[0], $array[2]); case "%": return $this->modulo($array[0], $array[2]); case "√": return $this->racine($array[0]); default: return false; } }
修复完成后,输入对应格式的平方根运算即可正常返回结果。
内容的提问来源于stack exchange,提问作者zac
相关产品推荐
相关产品推荐

