有没有之间的差异isset和!empty.如果我做这个双布尔检查,这种方式是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
Run Code Online (Sandbox Code Playgroud) 我想知道如果未设置给定值,显示默认值的最佳方法是什么.我在刀片文件中有以下内容(我无法保证密钥已设置,这取决于多种因素).
{{ $foo['bar'] }}
Run Code Online (Sandbox Code Playgroud)
我想知道以下是否是最好的方法,
{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法吗?
谢谢 :)
我正在处理前一个开发人员完成的一些代码.我是PHP的新手,所以我想知道是否有任何众所周知的模式或解决方案来解决这个问题.
基本上,原作者在尝试使用它们之前不会检查任何数组索引.我知道我可以使用isset()在使用之前检查每个,但是现在有数百行出现这些错误.在我放入一些音乐并开始将我的头撞入键盘之前,我想确保没有一些很好的快捷方式来处理它.这是我正在看的典型代码部分:
/* snip */
"text" => $link . $top_pick_marker . $output['author'] . " " . " " .
$output['new_icon'] . $output['rec_labels'] . " "
. $output['admin_link']
. $output['alternate_title']
. $output['access_info']
. $output['description']
. $output['url']
. $output['subject_terms']
. $output['form_subdivisions']
. $output['dates_of_coverage']
. $output['update_frequency']
. $output['place_terms'],
/* snip */
Run Code Online (Sandbox Code Playgroud)
所以我知道我可以在这里为每个项目使用isset().我将不得不重新安排一些事情并删除现在的所有连接.有没有其他简单的方法可以做到这一点,还是我只是坚持下去?
我如何添加isset()并在我的代码下面保留empty()?
$pagesize = (!empty($_GET['pagesize'])) ? $_GET['pagesize'] : 20;
Run Code Online (Sandbox Code Playgroud)
更新:
我只是想确保php不会产生任何通知或警告
问题是我使用的时候
$fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);
Run Code Online (Sandbox Code Playgroud)
在PHP表单提交后,填写fname字段获取输出正是我填写的内容,在提交未填充的fname输入字段后,获得输出绝对没有.使用的代码!empty,而不是
$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);
Run Code Online (Sandbox Code Playgroud)
提交未填充的fname输入字段后,获取输出sample.