2012-05-16 159 views
0

我遇到过一些奇怪的事情。我是试图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。=($ row ['creditUsed']> $ row ['creditLimit']?'color:red;':'');

这很好。

对不起!

回答

2

您反复附加$output(如果条件失败),导致它在每次迭代中的大小增加一倍(即指数增长)。

如果你真的必须在这里使用三元运算,需要追加的第三个操作数的字符串,而不是原始字符串:

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

编辑就像你回答。将接受你的答案虽然:) – imperium2335

相关问题