我有下面的表格,我在我的字段中输入一个值,这取决于是否有任何GET或不同。
我有什么工作,但我想知道是否有更有效的编码方式,因为我的真实形式将有大约10个输入字段,我不想每次添加时添加6行代码一个新的输入字段?
<?php
if (isset($_GET["name"])) {
$name = $_GET["name"];
}
else {
$name = 0;
}
if (isset($_GET["type"])) {
$type = $_GET["type"];
}
else {
$type = 0;
}
if (isset($_GET["other"])) {
$other = $_GET["other"];
}
else {
$other = 0;
}
?>
<input type="text" name="name" value="<?php echo $name; ?>">
<input type="text" name="type" value="<?php echo $type; ?>">
<input type="text" name="other" value="<?php echo $other; ?>">
我也尝试过
<?php
$name = $_GET["name"] ?: 0;
?>
这会在我的表单中输入值0,但是我收到错误注意:未定义的索引:名称
答案 0 :(得分:3)
在三元运算符中使用isset()
:
$name = isset($_GET["name"]) ? $_GET["name"] : 0;
您收到通知是因为您直接评估$_GET['name']
,而未使用isset()
或empty()
包装。
您可能更愿意为简单的代码制作一个简化功能:
function filterThing($key){
return isset($_GET[$key]) ? $_GET[$key] : 0;
}
$name = filterThing('name');
$type = filterThing('type');
$other = filterThing('other');
答案 1 :(得分:1)
试试这个:
$input_values = array('name','type','other');
foreach(input_values as $value){
$$value = isset($_GET[$value]) ? $_GET[$value] : 0;
}
答案 2 :(得分:1)
如果有人有兴趣,使用这个小方法,如果找不到GET键或者它不是整数,你也可以定义默认值:
//?foo=ABC&x=40
function tryGetInt($key, $def = 0){
return isset($_GET[$key]) && is_numeric($_GET[$key]) ? $_GET[$key] : $def;
}
$value1 = tryGetInt("foo"); //value1 = 0;
$value2 = tryGetInt("bar",20); //value2 = 20
$value3 = tryGetInt("x",20); //value3 = 40