XDebug 用于评估变量何时从 'else If' 语句设置为 True

XDebug to evaluate when a Variable is set to True from 'else If' Statement

我将 PhpStorm 与 WAMP 本地主机结合使用并启用了 xdebug。

寻找利用 xdebug 和 PhpStorm 的最佳解决方案来调试我的 PHP 脚本以查看哪一行 $var = true;

这是我的脚本的样子。这是一个嵌套 foreach for loop

foreach ($array as $index => $values) {

  $count = count($values);

        for ($i=0;$i<$count;$i++) {

        $word = false;
        $string = $values[$i]['word'];

               if (isset($values[$i+1]['word'])) { 
        $stringafter = $values[$i+1]['text'];
                                                  }

              if (strpos($string, 'Which') !== false && $word != true) {

                   if (strpos($stringafter, 'of') !== false) {

                       $string = $string;
                       $word = true;
                                                              }

                    else {

                       $string = NULL;
                       $word = true;

                          }

                                                                        }
                                         //ending first if condition loop

               elseif (preg_match('/[A-Z]/', $string) && $word != true) {
               //word contains at least one uppercase letter

                   $uc = preg_match('/^[A-Z]:\.*/', $string, $uccheck);
                   $firstletter = $uccheck[0];

                   if ($firstletter  == strtoupper($firstlette))  {
                       // first letter is uppercase        
                       $string = $string;
                       $word = true;

                                                                   }

                    else {
                        $string = NULL;
                        $word = true;
                         }

                                                                    }
                                 //ending first elseif condition loop

                elseif ($word != true) {

                         $string = NULL;
                         $word = true;

                                       }
   //ending second elseif condition loop


$word = false;
// setting $word back to false at end of for loop for next word

}
//ending for loop

}
//ending foreach loop

目前我只是把这个断点放在 $searchword = false;

的正上方
        if ('test' == 'test') {
            $true = true;
            $getword = $word;
        }

然后我可以遍历每个循环和条件,它会一一告诉我它是否通过这个循环以及在哪里$word = true;正在发生。

这很有用,但如果我想做的只是找出 [=16] 中的每个 $string 变量在条件循环 $word = true; 中发生的位置,这似乎是不必要的缓慢=].

我希望我可以在 PhpStorm 中右键单击调试器 > 变量控制台,其中显示 $word = true; 并选择选项 'Jump to Source'.. 但它只是让我回到开始我的 for 循环,其中声明了 $word = false

除了迭代或查看输出之外,是否有更简单的方法自动告诉我 $word = true; 的定义位置,而不是手动查看调试输出?

编辑:

评论有点长,所以我想我要重申一下。

@MrGlass 解释说 ($word == true) 等条件语句可以用在 if 语句中,但经过进一步测试,这个条件只适用于 if 语句而不是 elseif 语句。

示例:

Line 100:   elseif (preg_match('/[A-Z]/', $string) && $word != true) {
Line 101:      //word contains at least one uppercase letter
Line 102:          $uc = preg_match('/^[A-Z]:\.*/', $string, $uccheck);
Line 103:          $firstletter = $uccheck[0];
Line 104:   if ($firstletter  == strtoupper($firstlette))  {
Line 105:      // first letter is uppercase        
Line 106:          $string = $string;
Line 107:          $word = true;
Line 108:    }
Line 109:    }

正如我在下面的评论中巧妙地解释的那样,如果我在 PHPStorm 中附加条件,例如 $word == true($word == true)Line 100,我不会得到 results/breakpoints.如果我将它附加到 Line 108Line 109 上的结束花括号,我仍然没有匹配到我的断点。

如果我将断点放在第 104 行的条件 ($word == true) 我会得到我想要的结果。

有没有办法让 xDebug 在 elseif 语句中跟踪这种情况?

在 PhpStorm 中,如果您 right-click 在调试指示器(行号边距中的圆圈)上,您可以设置调试器在该行中断的条件。