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

时间:2018-06-16 21:46:57

标签: php debugging phpstorm xdebug

我正在将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,它将逐个告诉我。正在发生。

这很有帮助,但如果我要做的就是找出$word = true;中每个$string变量的条件循环for loop中的哪个位置,这似乎是不必要的慢

我希望我可以右键单击调试器&gt;变量控制台在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),我会得到一些条件,我得不到任何结果/断点。如果我将其附加到Line 108Line 109上的结束花括号,我的断点仍然没有匹配。

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

有没有让xDebug在elseif语句中跟踪这个条件?

1 个答案:

答案 0 :(得分:2)

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