PHP改进了一个简单的if / else语句

时间:2010-05-14 10:10:26

标签: php

<?php echo isset($areas['footer']) ? $areas['footer'] : null; ?>

有什么办法可以改善吗?

7 个答案:

答案 0 :(得分:4)

请注意,您正在回显,并且在错误的情况下它将是null,它没有任何效果。您可以说'empty'' ''not found'。其他替代方法是获取isset的返回值:

$return = isset($areas['footer']) ? $areas['footer'] : null;

if ($return)
{
  // $return contains footer info
}
else
{
  // footer was not set :(
}

答案 1 :(得分:2)

根据$ areas来自哪里,将它分配给变量可能更清晰:

$footer = isset($areas['footer']) ? $areas['footer'] : null;

然后你可以使用$ footer而无需任何额外的isset检查。

答案 2 :(得分:0)

您还可以通过设置默认值来备用else分支:

$footer = null;
if (isset($areas['footer'])) {
  $footer = $areas['footer'];
}

echo $footer;

答案 3 :(得分:0)

不,这是处理此类输出的最简洁方法。

答案 4 :(得分:0)

“我经常使用这种代码”

也许您应该通过使用模板语言或将此行为封装在函数中来完全避免此问题?

像这样:

function get_area($area) {
    if... //your code
    return $area

答案 5 :(得分:0)

我能想到的一个较短的版本是:

<?php !isset($areas['footer']) or print $areas['footer']; ?>

但我不确定它是否更快或更优雅。 你们觉得怎么样?

答案 6 :(得分:-1)

echo $areas['footer'];

简单且与原始线具有完全相同的效果。

编辑回复Felix 这给了一个通知,但除非你把它作为超完美的家庭作业,这并不重要。您可以使用isset调用填充代码,也可以忽略这样的小东西。如果我在说... Java,我会担心它,但实际上没有人会关心PHP代码是否有效产生通知。