我正在将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 108
或Line 109
上的结束花括号,我的断点仍然没有匹配。
如果我使用条件($word == true)
将我的断点放在第104行,我得到了我想要的结果。
有没有让xDebug在elseif
语句中跟踪这个条件?
答案 0 :(得分:2)
在PhpStorm中,如果您在调试指示器上right-click
(由行号在边距中的圆圈),您可以设置调试器在该行上断开的条件。