2009-08-14 73 views
4

我将如何添加isset()并在我的代码下面保留empty()?除了empty()之外,我怎样才能使用PHP的isset()?

$pagesize = (!empty($_GET['pagesize'])) ? $_GET['pagesize'] : 20; 

UPDATE:

我只是想确保PHP不产生任何通知或警告

+0

看到这个问题的答案约isset和空更多的解释:http://stackoverflow.com/questions/1219542/in-where-shall -i-use-isset-and-empty – nickf 2009-08-14 02:34:08

+1

您不必添加'isset'。如果变量没有被设置,'empty'将评估为真。 – jason 2009-08-14 02:35:49

+0

但是不会清空仍然允许php的通知显示,如果变量没有设置或不是? – JasonDavis 2009-08-14 02:41:53

回答

12

这是什么意思?

$pagesize = (isset($_GET['pagesize']) && !empty($_GET['pagesize'])) ? 
       $_GET['pagesize'] : 
       20; 

http://us.php.net/manual/en/language.operators.logical.php

编辑:
是完整的,如果事情被设置empty已经检查,这样你就不需要使用isset()函数也是如此。
我也谨慎使用这个代码,如果它直接进入查询或类似的东西。考虑使用intval,is_numeric和类似的功能。

+14

这是相当多余的,因为'empty'检查是否设置了一个值 – nickf 2009-08-14 02:32:57

+0

我知道,但我用给定的信息回答了问题。无论如何,这样的事情是危险的,因为它可能被设置而不是空的,但仍包含恶意代码或意外数据。我会更新我的答案以包含此内容。 – 2009-08-14 02:35:08

+2

@nickf这不是事实。有时候可以并且应该一起使用isset和empty。确实如果没有设置变量,则空值返回true,但不是每个变量isset都是空的。使用isset和!empty是确定变量是否被设置并包含可用值的好方法。 – Nilpo 2012-02-29 04:14:36

3

我不确定你到底在这里。 isset将检查是否已经设置了一个值,如果有,则返回true。 empty将检查值是否已经设置了或者是否等于假(例如:0, "", null),如果是,则返回true。

我看不出为什么你需要将两者结合起来。要重写你的榜样没有empty,你可以这样做:

$pagesize = isset($_GET['pagesize']) && $_GET['pagesize'] 
      ? $_GET['pagesize'] 
      : 20;