“切换”和“如果”条件没有检查我在 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 上的变量值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查和运行进程的php代码

根据列上的条件获取记录的单个值

Python。如果`ONE == True`,是不是会检查两个条件? [复制]

PHP:检查 MySQL TABLE 是不是已作为错误条件存在? [复制]

mysql只能取出一条记录为啥不显示

xampp 上的 codeigniter 想让我在 uri 中使用 index.php