“切换”和“如果”条件没有检查我在 PHP 上的变量值 [重复]
Posted
技术标签:
【中文标题】“切换”和“如果”条件没有检查我在 PHP 上的变量值 [重复]【英文标题】:"Switch" and "If" conditional is not checking my variable values on PHP [duplicate] 【发布时间】:2021-08-17 15:03:12 【问题描述】:“if”和“switch”都不适合我。你能帮帮我吗?
switch ($subject2)
case '-':
$input = $subject1;
break;
default:
$input = $subject1.' and '.$subject2;
echo $input;
我需要检查“subject2”是否有破折号。
如果有破折号,那么我的变量“input”需要存储“subject1”的值。
如果没有破折号,那么我的变量“input”需要存储“subject1”和“subject2”的值。
如果我尝试使用 0 代替(不带引号),它可以工作。如果我尝试使用“none”而不是破折号,它不起作用。
这是我正在运行的代码示例:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Form</h1>
<form action="" method="get">
<!--First field of the form-->
<label for="name">Choose an option(mandatory):</label>
<input list="opcionLista1" id="sujeto1" name="sujeto1" value="<?php echo isset($_GET["sujeto1"]) ? $_GET["sujeto1"] : ''; ?>" onfocus="this.value=''">
<datalist id="opcionLista1">
<option value="-">
<option value="Juan">
<option value="Pedro">
<option value="Oliver">
</datalist> <br><br>
<!--Second field of the form-->
<label for="name">Choose an option (Optional):</label>
<input list="opcionLista2" id="sujeto2" name="sujeto2" value="<?php echo isset($_GET["sujeto2"]) ? $_GET["sujeto2"] : ''; ?>" onfocus="this.value=''">
<datalist id="opcionLista2">
<option value="-">
<option value="Mariana">
<option value="Estefa">
<option value="Lucía">
</datalist>
<!--"Send" button-->
<input type="submit" name="enviar" value="buscar">
</form><br><br><br>
<!--Saving the field values on javascript to send them to PHP afterwards-->
<script type="text/javascript">
var sujeto1 = document.getElementById("sujeto1").value;
var sujeto2 = document.getElementById("sujeto2").value;
<?php
$sujeto1 = "<script>document.write(sujeto1)</script>";
$sujeto2 = "<script>document.write(sujeto2)</script>";
?>
</script><br><br><br>
<!--Finally, the "Switch" code meant to check the value of the second field, that would define the value of $input according to the option selected-->
<?php
switch ($sujeto2)
case '-':
$input = $sujeto1;
break;
default:
$input = $sujeto1.' and '.$sujeto2;
<!--This echo should show the value stored on my variable.-->
echo $input;
?>
</body>
</html>
该网站应该让您选择两个选项。第一个应该是(将是)强制性的,第二个应该是可选的。
当您点击“搜索”时,它应该会显示结果。但是,如果您在第二个字段中选择一个破折号,它会显示类似“juan and -”的内容,而不仅仅是“Juan”。
【问题讨论】:
【参考方案1】:您的开关代码正在测试是否$subject2
== -
要测试它是否“包含”-
,您有几个选择 - strpos() 是一个不错的选择
if (strpos($subject2, "-") !== false)
$input = $subject1;
else
$input = $subject1.' and '.$subject2;
甚至更短
$input = (strpos($subject2, "-") !== false) ? $subject1 : ($subject1 . ' and ' . $subject2) ;
作为参考,strpos()
返回找到的项目的索引,如果项目出现在字符串的开头,则该索引可以是 0
- 在 PHP 中,零等于“假”。这就是为什么你不能简单地测试if (strpos($subject2, "-")) ...
【讨论】:
以上是关于“切换”和“如果”条件没有检查我在 PHP 上的变量值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python。如果`ONE == True`,是不是会检查两个条件? [复制]