哪个更正确,更快,更安全:if(isset($ var)){do foo} OR if($ var){do foo}?

时间:2014-05-31 19:27:11

标签: php html

我正在创建一个名为errMsgs[]的关联数组,该数组将保存与特定<input>字段错误相对应的错误消息。哪种形式的测试errMsgs[]更正确,更快速,更安全?这两种方法都有重要的优点或缺点吗?

联系表单代码段:焦点 - &gt;表格中的第三个<td></td>,其中有三列,如...

(column1)    (column2)     (column3)  <----Focus of this code snippet.
---------    ----------    ----------

其中 column1 <label></label>内的<td></td> column2 <input /><td></td>控件的位置。 其中 column3 为空<td></td>,根据errMsgs[]关联数组有条件填充。

骨架1

    <tr>
        <td>
            <label>
            </label>
        </td>
        <td>
            <input />
        </td>
        <td>
<?php
            if($errMsgs['firstName'])
            {
                echo $errMsgs['firstName']; //This element is not from user input. 
            }
?>
        </td>
    </tr>

Skeleton 2

    <tr>
        <td>
            <label>
            </label>
        </td>
        <td>
            <input />
        </td>
        <td>
<?php
            if(isset($errMsgs['firstName']))
            {
                echo $errMsgs['firstName'];  //This element is not from user input.
            }
?>
        </td>
    </tr>

除了逃避和编码风格问题,哪个骨架优越?你过去使用过哪个?我想用最好的方式。

2 个答案:

答案 0 :(得分:2)

你可以尝试一下。

当密钥if($errMsgs['firstName'])不存在时,

firstName会返回通知。因此,请改用isset()

答案 1 :(得分:1)

好问题。语言结构isset()是前往这里的方式。