我正在努力让PHP
验证值中的负值,数字和非数字以及空值。
如果值是负数,空,非数字,我需要php显示错误消息。
我还遇到了无法从HTML
的{{1}}表单获取值的问题。
$_POST
在我的表单中,每个值的名称均正确拼写为我拥有的负值
$first = $_POST['first'];
$second = $_POST['second'];
$operation = $_POST['operation'];
对于空数字,我有
if ($first || $second < 0) {
print("<h2> Error one or more inputs are not negative numbers</h2>");
echo("<a href="calculator.html"></a>");
}
,对于非数字值:
if (empty($first) || empty($second) == true) {
print("<p> One or more input field is empty </p>");
echo("<a href="calculator.html"></a>");
}
我的问题是,每次输入任何数字,如果输入if (!is_numeric($first) || !is_numeric($second) == false) {
print("<h2> Error one or more inputs are not numbers</h2>");
echo("<a href="calculator.html"></a>");
}
或true
都会收到错误消息。
答案 0 :(得分:0)
首先,更改此条件,因为PHP会将其理解为($first || $second) <0
,其中$first || $second
将被视为单个布尔语句,然后返回的布尔值将转换为int(true-> 1 ,false-> 0),然后用<0
检查,它将始终为false,因此应将代码更改为:
if ($first<0 or $second < 0)
{
print("<h2> Error one or more inputs are not negative numbers</h2>");
echo("<a href="calculator.html"></a>");
}
在此块中,== true
是无用的,因为php中的if this or that
意味着“检查第一个值,并以正确的强制类型转换为布尔值,是对还是错,然后应用{ {1}}(在这两个值之间),在这种情况下,“ this”和“ that”已经是布尔值,因此它完全没有用,但是如果要显式显示,代码应类似于or
您只声明了两者之一,或者最好将其删除,因此代码应类似于
empty($first) == true or empty($second) == true
在最后的代码块中,逻辑是错误的,因为您要检查两个值之一是否不是数字,所以if (empty($first) or empty($second))
{
print("<p> One or more input field is empty </p>");
echo("<a href="calculator.html"></a>");
}
将返回true(如果该值不是数字),否则返回false。它是数字,因此代码应更改为
!is_numeric($value)
我也建议您使用if (!is_numeric($first) or !is_numeric($second))
{
print("<h2> Error one or more inputs are not numbers</h2>");
echo("<a href="calculator.html"></a>");
}
而不是||
。和or
而不是&&
,因为其他大多数语言都使用该运算符,因此,一旦您学会了,就可以使用所有语言
关于无法从请求中获取数据,请在答案表格中发布,我将使用可能的解决方案编辑此答案