我有一个PHP图形页面,显示从另一个PHP文件生成的图形。
生成PHP文件的图形将通过AJAX脚本更改其变量。
当PHP图形页面首次加载时,我需要能够识别生成的PHP文件中的变量是否为空,这样我就可以将其更改为默认值,直到数据通过$ _get函数覆盖它。
到目前为止,我已经尝试过没有运气而且有点卡住,任何帮助都会非常感激,因为我对PHP很新。谢谢:))
$course = $_GET['usercourse'];
if (empty($course))
{
$course = 'All';
}
else
{
}
答案 0 :(得分:3)
使用 isset()
功能。
if (isset($_GET['usercourse'])
{
//do something
}
答案 1 :(得分:2)
使用 isset()
功能。
if (isset($_GET['usercourse'])
{
//do something
}
答案 2 :(得分:1)
使用isset
功能,如下所示,
if(isset($_GET['usercourse']))
$course = $_GET['usercourse'];
if (empty($course))
{
$course = 'All';
} else {
//do something...
}
答案 3 :(得分:1)
天真的代码示例,用于检查变量是否已设置且不等于空字符串:
$course = isset($_GET['usercourse']) && $_GET['usercourse'] !== ''
? $_GET['usercourse']
: 'All';
稍微好一些:
$course = isset($_GET['usercourse']) && preg_match('@^(LIST|of|AccEPtabLE|vaLUes)$@i', $_GET['usercourse'])
? $_GET['usercourse']
: 'All';
$course = isset($_GET['usercourse']) && in_array($_GET['usercourse'], array('list', 'of', 'acceptable', 'values'))
? $_GET['usercourse']
: 'All';
更好:
答案 4 :(得分:1)
其他答案已经回答了你的直接问题,但我认为这里有更深层次的东西需要解释。
您通常希望避免访问您不确定存在的数组索引。
例如:
$a = array('foo' => 'bar');
echo $a['test']; //bad!
同样适用于$ _GET,$ _POST,$ _COOKIE等。除非您知道它们存在,否则不要访问索引。
请注意,对于用户定义的索引,这会转换为“除非您检查过索引存在,否则不要访问索引。”
$content = $_GET['content']; //ALWAYS wrong
检查数组索引有三个选项:isset,empty和array_key_exists。
如果$ x非空,则 isset($x)
返回true。 isset
基本上等同于:$x !== null
,但isset不会发出未定义的索引/变量通知。
(empty($x) === (!isset($x) || !$x))
换句话说,空虚认为任何松散等于假的东西都是空的。这在某些情况下很有用。
array_key_exists($key, $array)
是一个简单的保证,$array[$key]
不会发出未定义的索引通知。
那么以正确的方式提取用户输入的最简单方法是什么?
$content = (isset($_GET['content'])) ? $_GET['content'] : null;
如果用户提供了输入,那么$content !== null
就会有一个重要的保证。
请注意,您还应避免使用保留路径使变量未定义:
if (isset($_GET['content'])) {
$content = $_GET['content'];
}
echo $content; //WRONG - $content is not guaranteed to be defined
如果它包含在isset或空中,你可以在那种情况下使用$ content,但这会妨碍代码的可读性。如果要在某些条件下保留未定义的变量,请将其定义为null。如果没有发出变量,则将其保留为“未定义”,不存在警告。
$a = null;
var_dump($a === $b); //true, because the non-existent $b is treated as false
//(note that this is terrible style though -- this would issue a variable doesn't exist warning for $b
当然,还有PHP的filter扩展名。特别是,您可以使用filter_input来避免重写大量用于处理用户输入的代码。
您可以在适当的部分阅读更多关于正确(或偏执,有些人可能称之为)输入处理here或here的信息。
顺便说一句,你应该始终将错误发展到最后,你应该监视任何类型的错误(警告,通知等)。这将有助于防止潜在的逻辑错误,并且它可以保持代码清洁。 (似乎在从不发出通知的代码和编写良好的代码之间存在关联。)
答案 5 :(得分:0)
为什么不与空字符串进行比较?
if (!isset($course) || empty($course) ) {
$course = 'All';
}