2010-05-14 30 views

回答

4

请注意,您正在回应,并在假状态下它将是null这没有任何影响。你可以说像'empty'' ''not found'。另一种方法是获得isset返回值:

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

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

好的......我以为是这样,但想确定一下,因为我经常使用这种代码,只是想看看是否有什么改进。谢谢! – n00b 2010-05-14 10:17:28

+0

@ booze2go:不客气:) – Sarfraz 2010-05-14 10:18:12

2

根据其中$区来源于它可能是吸尘器将其分配给一个变量:

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

然后你可以使用$页脚不任何额外的isset检查。

-1
echo $areas['footer']; 

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

编辑在回复给菲利克斯 这给出了一个通知,但除非你应该把它作为超完美的功课,这并不重要。你可以用isset调用来填充你的代码,或者忽略这样的小东西。如果我正在工作,我会担心它...... Java,但实际上没有人会关心如果有效的PHP代码会产生通知。

+1

但是如果'$ areas'没有元素和键'footer',它会给你一个通知/警告(不知道是哪个)。 – 2010-05-14 10:59:36

+0

用@使其静音的前缀。 – Pepijn 2010-05-14 11:30:50

+1

@Pepijin:沉默警告而不是修复造成它的状况通常被认为是糟糕的编码风格。 – Powerlord 2010-05-14 15:22:12

0

您也可以腾出else分支,通过设置默认:

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

echo $footer; 
0

不,这是处理这种输出的最简洁的方式。

0

“我使用这种代码非常频繁”

也许你应该完全使用模板语言,或封装在一个函数这种行为避免这个问题?

这样的:

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

具有讽刺意味的是,PHP是一种模板语言,尽管它通常不会以这种方式使用,因为诸如Smarty之类的“真实模板语言”存在。 – apg 2010-05-14 12:03:28

+0

我知道有人会这么说。我从来没有使用过PHP的模板语言,但我认为PHP在做一个适当的模板语言方面做得很糟糕。 – Pepijn 2010-05-14 20:19:03

0

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

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

,但我不知道这是更快或更优雅。 你们觉得怎么样?