PHP中的多个条件

时间:2009-09-02 21:33:15

标签: php

我知道这很容易让人感到尴尬,但我现在无法让它工作,不断出现语法错误,我只是添加了一个预先填写表单字段的jquery代码,当你选择表单字段时它会清除默认值。结果是,如果用户在不更改默认值的情况下提交表单,我需要查看它是否存在于我的普通字符串sanitation之外

在PHP下面的这个片段中我需要在$ fname上运行2个条件,但是下面的代码不起作用,有人可以帮忙吗

$fname = 'first name';

if (trim($fname) == '') && ($fname != 'first name') {
    $err .= "error";
}else{
    $err .= "all good";
}

对于karim79 以下代码来自您的示例,就像这样给了我这个错误

致命错误:无法在第5行的写入上下文中使用函数返回值

<?PHP
$fname = '';

if(empty(trim($fname))) {
    echo "First name is empty";
}
?>

3 个答案:

答案 0 :(得分:5)

$fname = 'first name';

if (trim($fname) == '' || $fname != 'first name') {
    $err .= "error";
} else {
    $err .= "all good";
}

我更愿意使用strcmp

if (trim($fname) == '' || strcmp($fname,'first name') !== 0) {
    $err .= "error";
} else {
    $err .= "all good";
}

如果名字的大小写不重要,您应该考虑使用strcasecmp。另请注意,您可以使用empty来测试空字符串:

$fname = '';
$fname = trim($fname);
if(empty($fname)) {
    echo "First name is empty";
} else {
    echo "Not empty";
}

使用空时,请注意以下事项(来自manual):

  

注意:empty()仅将变量检查为   其他任何东西都会导致解析   错误。换句话说,以下   不起作用:空(修剪($ name))。

答案 1 :(得分:2)

$fname = 'first name';

if (trim($fname) == '' || $fname == 'first name') {
    $err .= "error";
}else{
    $err .= "all good";
}

PS:我认为如果字符串为空或标准值,则要引发错误。如果那是错的,请告诉我。

答案 2 :(得分:0)

我建议不要使用empty()。它有一些棘手的返回模式,包括告诉你0是空的,以及那种性质的东西。不幸的是,这是PHP的缺点。

相反,请尝试此算法(以下假定您的表单POST):

<?php
    $err = array();
    // this is for sticklers..with E_STRICT on, PHP
    // complains about uninitialized indexes
    if( isset($_POST['name']) )
    {
       $name = trim($_POST['name']);
    }
    else
    {
       $name = '';
    }

    if( strlen($name) == 0 )
    {
      $err[] = "First name is required.";
    }

    // after validation is complete....
    if( count($err) > 0 )
    {
        echo "There are errors!";
        // probably something more elaborate here, like 
        // outputting an ordered list to display each error
        print_r($err);
    }
    else
    {
        echo "It's all good!";
    }
?>