所以我过去几天一直在积极学习PHP,为了练习,我编写了PHP脚本,它采用HTML Form值。
我尝试编写脚本,我有5个人,你必须输入你的姓名和姓氏。如果它与五个人中的一个匹配,则发送一条消息,如果不匹配,则发送另一条消息。这是(没有表单部分,只有PHP):
$first = $_POST["first"];
$last = $_POST["last"];
if ($first == "Jeb") {
if ($last == "Jeb") {
print "Hello!";
} else {
print "I dont know you!";
}
} elseif ($first == "Bob") {
if ($last == "Bob") {
print "Hello!";
} else {
print "I dont know you!";
}
} elseif ($first == "Bill") {
if ($last == "Bill") {
print "Hello!";
} else {
print "I dont know you!";
}
} elseif ($first == "Annie") {
if ($last == "Annie") {
print "Hello!";
} else {
print "I dont know you!";
}
} elseif ($first == "Hugo") {
if ($last == "Hugo") {
print "Hello!";
} else {
print "I dont know you!";
}
} else {
print "I dont know you!";
}
它运作良好,但我有疑问 - 这可以更容易/写得更短吗?这可以使用switch语句完成吗?
任何反响都会得到赞赏!
答案 0 :(得分:7)
我可以看到使用数组的方法
$people=array('Bob Bob', 'Bill Bill');//etc
if(in_array($first.' '.$last,$people)){
print "Hello!";
}else{
print "I dont know you!";
}
答案 1 :(得分:4)
使用数组的解决方案。假设所有已知名称都是同名的对(bob bob,jeb jeb等)
$knownNames = array("Jeb", "Bob", "Bill", "Annie", "Hugo");
if (in_array($first, $knownNames) && $first == $last)
print "Hello!";
else
print "I don't know you!"
答案 2 :(得分:0)
我会使用数组(避免重复代码/ ifs)
$name = array(
'first' => $_POST["first"],
'last' => $_POST["last"]
);
$knownNames = array(
array(
'first' => 'Bob',
'last' => 'Bob'
),
array(
'first' => 'Bill',
'last' => 'Bill'
),
array(
'first' => 'Annie',
'last' => 'Annie'
),
array(
'first' => 'Hugo',
'last' => 'Hugo'
)
);
if (in_array($name, $knownNames)) {
print "Hello!";
} else {
print "I dont know you!";
}
答案 3 :(得分:0)
在您的示例中,您基于两个测试做出决定:
我是否认可提交的名字?
我是否认可提交的姓氏?
然后你根据上述测试是否都是真的来回应。
我建议你将每个测试分成它自己的功能:
function isValidFirstName($name)
{
$valid_names = array('Jeb','Bob','Bill','Annie','Hugo');
return in_array($name, $valid_names);
}
function isValidLastName($name)
{
$valid_names = array('Jeb','Bob','Bill','Annie','Hugo');
return in_array($name, $valid_names);
}
$first = $_POST['first'];
$last = $_POST['last'];
if( isValidFirstName($first) && isValidLastName($last) )
{
print "Hello!";
} else
{
print "I don't know you!";
}