2014-09-13 104 views
-4

我想弄清楚如何做到这一点。我可以很容易地在Perl中做到这一点,但不能让它在PHP中工作:PHP - foreach数组

我有大约6个字段在Web窗体中填写时是必填字段。

我希望把它们放入数组,这样的:名称=>“错误消息在这里”:

$_ReqFields = array('name' => "Name is Required", 'field2' => "Field 2 is Required", 'field3' => "Field 3 is Required"); // ect... 

但我不能找出的foreach以显示消息,如果提交的领域是空的,这里是我到目前为止有:

$_err = 0; 
foreach ($reqFields as $__field) { 
    if(empty($_REQUEST[$__field])) { 
    $_err++; 
    $_errMsg .= "{$reqFields{$__field}}" . "<br>";// ?? not sure how to do this to keep appending the error message for each field to the error message I'll show... 
    } 
} 

所以后来我只需要检查$ _ERR仍然为0,如果是的话,没有任何错误,它是好的,处理请求......但我不能弄清楚我在那里做错了什么。

你能帮助我吗?

谢谢。 丰富

+0

为什么你不发表评论,为什么你给这个消极的?而不是只点击“消极”,所以我可以改善我的问题......我被卡住了,为什么那个“坏”?至少我在努力,而不是像有些人那样要求你为我做这件事。我先尝试一下,直到我感到沮丧。 我每天都用他们不知道的事帮助别人,所以周围会发生什么。我一直支付它,离线... – 2014-09-13 01:45:22

回答

0
所有变量名的

第一“$ _ReqFields”是不是你使用的是相同的“$ reqFields”也许你需要$ _ReqFields重命名为$ reqFields

试试这个:

$reqFields = array( 'name' => 'Name is Required', 
        'field2' => 'Field 2 is Required', 
        'field3' => 'Field 3 is Required'); 
$_err = 0; 
$_errMsg = ''; 
foreach ($reqFields as $field_name=>$error_msg) { 
    if(isset($_REQUEST[$field_name]) && !$_REQUEST[$field_name]) { 
    $_err++; 
    $_errMsg .= $error_msg.'<br />'; 
    } 
} 
+0

对不起,我在他们的文件上有他们相同的,我只是复制它,并chnaged了一些东西,没有意识到我也改变了。我只是拿出一些私人的东西......对不起。我的错。 这对我来说是这样的:$ field_name => $ error_msg 那部分。我无法弄清楚。 非常感谢! – 2014-09-13 01:42:26

+0

我必须编辑代码来做更有效的,在PHP中,简单的报价比双引号更快。我发现我的errorMsg冗余与“{$ error_msg}”我改变了它。谢谢! – 2014-09-13 01:45:19

0

这是否工作:

$_err = 0; 
$_errMsg = ''; 
foreach ($reqFields as $key=>$value) { 
    if(empty($_POST[$key])) { 
    $_err++; 
    $_errMsg .= $value . '<br />'; 
    } 
} 

固定的foreach查找键和值,我想数据是POST数据,所以我改变$ _REQUEST至$ _ POST。还修复了$ _errMsg