繁体   English   中英

如何在PHP中结合“和”语句以及“如果”语句?

[英]How to combine “and” statements and “if”statements in PHP?

我正在尝试以我汇总的形式为供应商和模型写一张支票

这是表格的重要部分

<table  width="75%">
<form action="?" method="post">
<tr>
<td colspan="6" align="center">
<font size="5"><b>Add new record</b></font>
</td>
</tr>
<tr>
<td align="right">
<b>Vendor:</b>
</td>
<td>
<select name="vendor">
<option value="ClearAccess">ClearAccess</option>
<option value="VisionNet">VisionNet</option>
<option value="Other">Other</option>
</select>
</td>
<td align="right">
<b>Model:</b>
</td>
<td>
<select name="model">
<option value="NotModel">--ClearAccess--</option>
<option value="AG10W">AG10W</option>
<option value="SR100G">SR100G</option>
<option value="SR300N">SR300N</option>
<option value="SR350N">SR350N</option>
<option value="SR500N">SR500N</option>
<option value="NotModel">--VisionNet--</option>
<option value="M404">M404</option>
<option value="M405">M405</option>
<option value="M505">M505</option>
<option value="M505n">M505N</option>
<option value="Legacy">Legacy</option>
</select>
</td>

我的形式很好。 我的问题是何时构建if循环。 这是我到目前为止的

if ($_POST['vendor']='ClearAccess') && ($_POST['model']='M404') || ($_POST['model']='M405') || ($_POST['model']='M505') || (_$POST['model']='M505N') || ($_POST['model']='Legacy')
echo "You have not selected a valid vendor/model combination"

我在哪里以及如何放置括号方面遇到问题。

我还将创建一个类似于此的if语句

if ($_POST['vendor']='VisionNet') && ($_POST['model']='AG10W') || ($_POST['model']='SR100G') || ($_POST['model']='SR300N') || (_$POST['model']='SR350N') || ($_POST['model']='SR500N')|| ($_POST['model']='Legacy')
echo "You have not selected a valid vendor/model combination"

我完全愿意以不同的方式来做。 最终,我将其转换为Java脚本,您在其中选择一个供应商,并仅获取该供应商的相关模型。 就像我仍在学习PHP一样,甚至还没有学习Java的基础知识,但我想尝试这种方式。

减少逻辑。 从一般语句中要执行的操作开始。

A = "Vendor is VisionNet"
B = "Model is AG10W"
C = "Model is SR100G"
etc.

然后写下你的逻辑

if (A and (B or C))

要么

if ((A and B) or C)

等等

然后,用等价的PHP替换您的占位符。

在PHP中,如果您试图查看x是否为多个值之一,则可以使用in_array()方法:

$models = array('AG10W', 'SR100G', 'SR300N', 'SR350N', 'SR500N', 'Legacy');

// if the vendor is vision net OR the model is in the list of models defined in $models, do something
if ($_POST['vendor'] == 'VisionNet' || in_array($_POST['model'], $models)) {
    // do something.
}

还要考虑操作员 分配不同于比较。

记住,逻辑只是数学的另一个子集。 括号很重要,因此,如果您尽早关闭if语句,那就结束了。 之后的所有内容都会变成语法错误。

我之所以这样说是因为您写的是:

if ($_POST['vendor'] = 'VisionNet') || ...

这是离散数学教程的链接,这是说“逻辑数学”的一种好方法。

此外,对于所有感兴趣的人,麻省理工学院(麻省理工学院)免费提供在线开放课程,其中之一是计算机科学数学,它深入讨论离散数学。

这是您的问题:

  1. 使用=代替==
  2. 不将()放在if语句中

if ($_POST['vendor']='ClearAccess') && ($_POST['model']='M404') || ($_POST['model']='M405') || ($_POST['model']='M505') || (_$POST['model']='M505N') || ($_POST['model']='Legacy')

至 :

if (($_POST['vendor']=='ClearAccess') && ($_POST['model']=='M404') || ($_POST['model']=='M405') || ($_POST['model']=='M505') || (_$POST['model']=='M505N') || ($_POST['model']=='Legacy')) 

首先,您需要使用===而不是= 单个等于表示分配,而不是比较。

其次,我认为您要尝试做的是说“如果是这家供应商并且是这些模型之一,请执行某些操作。如果是这样,请尝试以下操作:

   if($_POST['vendor'] === 'ClearAccess' && (*various models, using ||*))
       //dostuff

这样,如果供应商与至少一个模型相同,则等于true

更好的方法是建立各种模型的数组,然后使用PHP的in_array()

您必须在if条件中使用==代替=

所以代替:

if ($_POST['vendor']='ClearAccess') && ...

采用

if ($_POST['vendor'] == 'ClearAccess') && ...

最好使您的if条件像这样:

if ($_POST['vendor'] == 'ClearAccess') &&
    str_replace(array('M404', 'M405', 'M505', 'M505N', 'Legacy'), '', $_POST['model']) 
         != $_POST['model']
   )
   echo "You have not selected a valid vendor/model combination"

您应该查看if语句的php语法http://php.net/manual/en/control-structures.if.php,因为您的语法错误。 您正在将post变量分配给除==之外的其他值

如果($ _POST ['vendor'] =='VisionNet')
另外,您应该重新考虑自己的$$和|| 用法并确定程序中实际要说的内容。

将&&括在自己的括号内。 因此,下面的示例说明POST [vendor]是Clear Acces,而POST [model]是M404,还是POST [model]是M405,M505,M505N或Legacy。

if (($_POST['vendor']=='ClearAccess') && ($_POST['model']=='M404')) || ($_POST['model']=='M405') || ($_POST['model']=='M505') || (_$POST['model']=='M505N') || ($_POST['model']=='Legacy') 
echo "You have not selected a valid vendor/model combination"

您需要把()正确...

只是为了让您了解语法,这是带有漂亮换行符的代码:)

if (
($_POST['vendor'] == 'ClearAccess' && $_POST['model'] = 'M404') || 
$_POST['model'] == 'M405' || 
$_POST['model'] == 'M505' || 
$_POST['model'] == 'M505N' ||
$_POST['model'] == 'Legacy'
) {
echo "You have not selected a valid vendor/model combination"
}

而且没有换行符:

if (($_POST['vendor'] == 'ClearAccess' && $_POST['model'] == 'M404') || $_POST['model'] == 'M405' ||  $_POST['model'] == 'M505' || $_POST['model'] == 'M505N' || $_POST['model'] == 'Legacy') {
echo "You have not selected a valid vendor/model combination"
}

您的其他陈述也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM