在PHP中,判断表达式中括号是否匹配可以通过使用栈(Stack)数据结构来实现。以下是一个简单的实例,用于检查字符串中的括号是否匹配:
<?phpfunction isBalanced($expression) { $stack = []; $brackets = [ ')' => '(', '}' => '{', ']' => '[' ]; for ($i = 0; $i < strlen($expression); $i++) { $char = $expression[$i]; // 如果是开括号,压入栈中 if (in_array($char, array_values($brackets))) { array_push($stack, $char); } // 如果是闭括号,检查是否与栈顶元素匹配 elseif (array_key_exists($char, $brackets)) { if (empty($stack) || array_pop($stack) != $brackets[$char]) { return false; } } } // 如果栈为空,说明所有括号都匹配 return empty($stack);}// 测试用例$expression1 = "{[()()]}";$expression2 = "{[(])}";echo isBalanced($expression1) ? "Balanced" : "Not Balanced"; // 输出: Balancedecho "\n";echo isBalanced($expression2) ? "Balanced" : "Not Balanced"; // 输出: Not Balanced?>
代码说明:
栈的使用:我们使用一个数组来模拟栈的行为。当遇到开括号(
(
,{
,[
)时,将其压入栈中。当遇到闭括号()
,}
,]
)时,从栈中弹出栈顶元素并检查是否与当前闭括号匹配。括号匹配:我们使用一个关联数组
$brackets
来存储闭括号与开括号的对应关系。遍历字符串:遍历字符串中的每个字符,根据字符的类型(开括号或闭括号)进行相应的操作。
最终检查:遍历结束后,如果栈为空,说明所有括号都匹配;否则,说明有未匹配的括号。
测试用例:
{[()()]}
是一个括号匹配的表达式,输出Balanced
。{[(])}
是一个括号不匹配的表达式,输出Not Balanced
。
这个简单的实例可以帮助你理解如何使用栈来检查括号是否匹配。
本文关键词: PHP 判断 表达式 括号 是否 匹配
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。