Php 三值IF导致内存不足

Php 三值IF导致内存不足,php,memory-leaks,ternary-operator,Php,Memory Leaks,Ternary Operator,我遇到了一些奇怪的事情。我试图使用以下三元if语句: $output .= ($row['creditUsed'] > $row['creditLimit'] ? 'color:red;' : $output) ; 这导致我的浏览器挂起,最终导致PHP内存不足错误 目前,我只是使用: if($row['creditUsed'] > $row['creditLimit']) { $output .= 'color:red;' ; } 这很好用 有人知道为什么会这样吗?if语

我遇到了一些奇怪的事情。我试图使用以下三元if语句:

$output .= ($row['creditUsed'] > $row['creditLimit'] ? 'color:red;' : $output) ;
这导致我的浏览器挂起,最终导致PHP内存不足错误

目前,我只是使用:

if($row['creditUsed'] > $row['creditLimit'])
{
    $output .= 'color:red;' ;
}
这很好用

有人知道为什么会这样吗?if语句位于while循环中,完整代码太多,无法发布:

$i = 0 ;
while($row = $result->fetch(PDO::FETCH_ASSOC)) {

if($i == 0)
{
    //something
}
if($row['amountDue'] > $row['amount'] && $row['amount'] > 0.01)
{
// Stuff
}
else
{
    $output .= ($row['creditUsed'] > $row['creditLimit'] ? 'color:red;' : $output) ;
}
$i++ ;
}

这是我的错!我意识到$output在循环的每一次迭代中都以指数级增长。我把它改成: $output.=($row['creditUsed']>$row['creditLimit']?'颜色:红色;':'')

很好


对不起

您反复将
$output
附加到自身(如果条件失败),导致每次迭代时其大小加倍(即指数增长)

如果确实必须在此处使用三元运算符,则需要在第三个操作数中追加空字符串,而不是原始字符串:

$output .= ($row['creditUsed'] > $row['creditLimit'] ? 'color:red;' : '');

按你的回答编辑。但我会接受你的答案:)