有谁知道为什么这个函数仍然返回false?
功能页面:
function validateDate($date)
{
$array = array();
$array = explode("-", $date);
if (strlen($array[1]) != 1 || strlen($array[1]) != 2) {
return false;
} else if (strlen($array[0] != 1 || strlen($array[0] != 2))) {
return false;
} else if (strlen($array[2] != 4)) {
return false;
} else if (checkdate($array[1], $array[0], $array[2]) == false) {
return false;
} else {
return true;
}
}
验证页面:
if (validateDate($_POST['birth']) == false) {
?><img class="inputCheckImg" src="<?= ICON ?>cross.png"><a class="inputCheckCross">This is not a valid date.</a><?
}
输入为:8-5-1996
或08-05-1996
我试过了两个,但两个都不起作用。
答案 0 :(得分:2)
在你的第一次测试中:
if (strlen($array[1]) != 1 || strlen($array[1]) != 2) {
return false;
每个字符串的长度不等于1,或者不等于2.也就是说,长度为1的字符串将在测试的第二部分失败,而长度为2的字符串将使第一部分失败。将运营商更改为&&
。
if (strlen($array[1]) != 1 && strlen($array[1]) != 2) {
return false;
检查其他测试是否存在类似错误。
答案 1 :(得分:1)
我把它归功于Hobo Sapiens和TheChafing。
但是我改变了一件事。
而不是!=
我使用了<
或>
那就是现在:
function validateDate($date)
{
$array = array();
$array = explode("-", $date);
if (strlen($array[1]) < 1 && strlen($array[1]) > 2) {
return false;
} else if (strlen($array[0] < 1 && strlen($array[0] > 2))) {
return false;
} else if (strlen($array[2] != 4)) {
return false;
} else if (checkdate($array[1], $array[0], $array[2]) == false) {
return false;
} else {
return true;
}
}
答案 2 :(得分:0)
你的strlen有一个错位的关闭括号
strlen($ array [2])!= 1
等
答案 3 :(得分:0)
在你的if语句中:
if (strlen($array[1]) != 1 || strlen($array[1]) != 2) {
return false;
}
您正在检查该元素是否为!= 1 OR!= 2。它不会等于两者,因此其中一个将评估为true,导致函数返回false。
据我所知,你可能想要使用&amp;&amp;无论如何,那里的运营商。
答案 4 :(得分:0)
我不经常使用PHP,但我很好奇为什么Kris Zani被低估了。
给我
} else if (strlen($array[0] != 1 || strlen($array[0] != 2))) {
return false;
}
看起来很糟糕地回到了地狱。在我看来应该是:
if (strlen($array[0]) != 1 || strlen($array[0]) != 2)