Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach循环中的If语句_Php_Arrays_If Statement_Foreach - Fatal编程技术网

Php Foreach循环中的If语句

Php Foreach循环中的If语句,php,arrays,if-statement,foreach,Php,Arrays,If Statement,Foreach,我有一个php页面,我试图简化它,但遇到了一些我自己无法解决的问题。“我的表单”获取用户数据,发布到自身,验证字段是否已填写,然后将表单内容/发布显示到mysql数据库 我遇到的问题是,我希望将变量名加载到数组中,循环该数组,而不是使用20个if()/elseif语句,如果表单中没有填充变量,则会生成错误消息。不幸的是,无论字段中是否有值,我的代码都将显示错误消息 作为补充说明,我可以将$ShippingCo添加到我的表单中并对其进行响应,但仍会显示未完成的通知 另外,如果脚本进入if语句,我希

我有一个php页面,我试图简化它,但遇到了一些我自己无法解决的问题。“我的表单”获取用户数据,发布到自身,验证字段是否已填写,然后将表单内容/发布显示到mysql数据库

我遇到的问题是,我希望将变量名加载到数组中,循环该数组,而不是使用20个if()/elseif语句,如果表单中没有填充变量,则会生成错误消息。不幸的是,无论字段中是否有值,我的代码都将显示错误消息

作为补充说明,我可以将$ShippingCo添加到我的表单中并对其进行响应,但仍会显示未完成的通知

另外,如果脚本进入if语句,我希望它在关闭后停止执行页面的其余部分,我已尝试退出;没有成功

以下是我所拥有的:

<?php

$ShippingCo = $_POST['ShippingCo'];
$ShipAcct = $_POST['ShipAcct'];
$ShipService = $_POST['ShipService'];
$FOB = $_POST['FOB'];
$Terms = $_POST['Terms'];

$ENote[] = '$Terms';
$ENote[] = '$FOB';
$ENote[] = '$ShippingCo';
$ENote[] = '$ShipAcct';
$ENote[] = '$ShipService';

$Emessg[] = 'Shipping Terms';
$Emessg[] = 'FOB Method';
$Emessg[] = 'Shipping Company';
$Emessg[] = 'Shipping Account';
$Emessg[] = 'Shipping Service Type';


foreach ($ENote as $a => $b) {

if(!$$ENote[$a]){       //I intentionally put the '$$' in this line otherwise none of the messages show. . . with data in the variables or not.

$error = "Error!  Please Add the $Emessg[$a]!";
?>
<table width="800" align="center">
<tr>
<td align="center">

<h2>Sales Order Entry Form</h2>
</td>
</tr>
<tr>
<td align="center">
<h3>
<font color="red">
<?php
echo "$error";
?>
</font>
</h3>
</td>
</tr>
<tr>
<td align="center">
Please press back to properly complete the form</td>
</tr>
</table>

<?php
}
}
?>

销售订单输入表格
请按“上一步”正确填写表格

提前谢谢。

我怀疑语法
$$ENote[$a]
可能被解释为
($$ENote)[$a]
而不是
$($ENote[$a])
(括号不是合法语法,仅供演示)

所以我建议使用一个中间变量,或者使用复杂的语法:

foreach ($ENote as $a => $b) {
  $varname = $ENote[$a];
  if(!$$varname){
或者(未经测试,只是预感它可能会起作用):


我怀疑语法
$$ENote[$a]
可能被解释为
($$ENote)[$a]
,而不是
$($ENote[$a])
(括号不是合法语法,仅用于演示)

所以我建议使用一个中间变量,或者使用复杂的语法:

foreach ($ENote as $a => $b) {
  $varname = $ENote[$a];
  if(!$$varname){
或者(未经测试,只是预感它可能会起作用):


为什么不创建一个数组或所有字段,并将该数组传递给一个函数,在该函数中,循环遍历每个项,如果为空,则抛出一个错误

大概是这样的:

function checkEmpty($some_array) {
    foreach($some_array as $key=>$value) {
      if($value=="") {
         or if(empty($key)) {   ///throw error }
         //put error message and exit

       }

    }
  }

为什么不创建一个数组或所有字段,并将该数组传递给一个函数,在该函数中,循环遍历每个项,如果为空,则抛出一个错误

大概是这样的:

function checkEmpty($some_array) {
    foreach($some_array as $key=>$value) {
      if($value=="") {
         or if(empty($key)) {   ///throw error }
         //put error message and exit

       }

    }
  }

这里有几个问题

首先,每个
$ENote
条目必须省略前面的
$
。不得包含
$
部分

$ENote[] = 'Terms';
$ENote[] = 'FOB';
...
其次,正如ctrahey所说,您需要将变量名存储到一个变量中,以便用另一个
$
扩展它

以下是一些代码清理提示:

  • 将两个数组合并为一个(映射)
  • 分配给循环中
    $\u POST
    中的命名变量
  • 使用
    break
    退出循环
这将消除大部分冗余

$ENote = array(
    'Terms' => 'Shipping Terms',
    'FOB' => 'FOB Method',
    ...
);

foreach ($ENote as $field => $title) {
    $value = $$field = $_POST[$field];
    if (!$value) {
        ... display error using $title ...
        break;  // exit loop
    }
}

这里有几个问题

首先,每个
$ENote
条目必须省略前面的
$
。不得包含
$
部分

$ENote[] = 'Terms';
$ENote[] = 'FOB';
...
其次,正如ctrahey所说,您需要将变量名存储到一个变量中,以便用另一个
$
扩展它

以下是一些代码清理提示:

  • 将两个数组合并为一个(映射)
  • 分配给循环中
    $\u POST
    中的命名变量
  • 使用
    break
    退出循环
这将消除大部分冗余

$ENote = array(
    'Terms' => 'Shipping Terms',
    'FOB' => 'FOB Method',
    ...
);

foreach ($ENote as $field => $title) {
    $value = $$field = $_POST[$field];
    if (!$value) {
        ... display error using $title ...
        break;  // exit loop
    }
}

Asker知道这一点,事实上正在利用它。Asker知道这一点,事实上正在利用它。