在PHP中你可以做到if(isset($array['foo'])) { ... }.在JavaScript中,您经常使用if(array.foo) { ... }相同的方法,但这不是完全相同的语句.如果array.foo确实存在,条件也将评估为false,但是false或者0(也可能是其他值).
issetJavaScript 中PHP的完美等价物是什么?
从更广泛的意义上讲,JavaScript处理不存在的变量,没有值的变量等的一般完整指南会很方便.
来自isset()文档:
isset() will return FALSE if testing a variable that has been set to NULL.
Run Code Online (Sandbox Code Playgroud)
基本上,isset()不检查变量是否设置,但是否设置为除了NULL.
鉴于此,实际检查变量是否存在的最佳方法是什么?我尝试过类似的东西:
if(isset($v) || @is_null($v))
Run Code Online (Sandbox Code Playgroud)
(这@是必要的,以避免$v未设置时的警告)但is_null()有一个类似的问题isset():它返回未TRUE设置的变量!它似乎也是:
@($v === NULL)
Run Code Online (Sandbox Code Playgroud)
工作完全一样@is_null($v),所以也是这样.
我们如何可靠地检查PHP中是否存在变量?
编辑:在未设置的变量和设置为的变量之间,PHP显然存在差异NULL:
<?php
$a = array('b' => NULL);
var_dump($a);
Run Code Online (Sandbox Code Playgroud)
PHP显示$a['b']存在,并且具有NULL值.如果你添加:
var_dump(isset($a['b']));
var_dump(isset($a['c']));
Run Code Online (Sandbox Code Playgroud)
你可以看到我正在谈论的isset()功能歧义.以下是所有这三个的输出var_dump()s:
array(1) {
["b"]=>
NULL
}
bool(false)
bool(false)
Run Code Online (Sandbox Code Playgroud)
进一步编辑:两件事.
一,用例.将数组转换为SQL UPDATE语句的数据,其中数组的键是表的列,数组的值是要应用于每列的值.任何表的列都可以保存一个NULL值,通过 …
我读到isset()函数处理空字符串的某处TRUE,因此isset()不是从HTML表单验证文本输入和文本框的有效方法.
因此,您可以empty()用来检查用户输入的内容.
该isset()函数是否将空字符串视为TRUE?
那我应该在哪些情况下使用isset()?我应该总是!empty()用来检查是否有东西?
例如,而不是
if(isset($_GET['gender']))...
Run Code Online (Sandbox Code Playgroud)
用这个
if(!empty($_GET['gender']))...
Run Code Online (Sandbox Code Playgroud) 我在一个页面上有一个表单,提交到另一个页面.在那里,它检查输入邮件是否已填满.如果是,那么做一些事情,如果没有填补,做其他事情.我不明白为什么它总是说它被设置,即使我发送一个空表格.缺少什么或错了什么?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
Run Code Online (Sandbox Code Playgroud)
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
Run Code Online (Sandbox Code Playgroud) 我需要检查值是否定义为任何值,包括null.isset将null值视为未定义并返回false.以下面的例子为例:
$foo = null;
if(isset($foo)) // returns false
if(isset($bar)) // returns false
if(isset($foo) || is_null($foo)) // returns true
if(isset($bar) || is_null($bar)) // returns true, raises a notice
Run Code Online (Sandbox Code Playgroud)
请注意,这$bar是未定义的.
我需要找到满足以下条件的条件:
if(something($bar)) // returns false;
if(something($foo)) // returns true;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
javascript/jQuery中有什么东西可以检查变量是否设置/可用?在php中,我们isset($variable)用来检查这样的东西.
谢谢.
如果在PHP中不存在变量,是否有一种速记方式可以将变量赋值给某些东西?
if(!isset($var) {
$var = "";
}
Run Code Online (Sandbox Code Playgroud)
我想做点什么
$var = $var | "";
Run Code Online (Sandbox Code Playgroud) 我有一个f带两个参数(p1和p2)的函数:
如果对于参数p2没有将值传递给函数,p1则应使用^ 2 的值.但是,如果给出一个值,我怎样才能在函数中找到.问题是p2如果没有值,则不会初始化变量.因此我无法测试p2存在NULL.
f <- function(p1, p2) {
if(is.null(p2)) {
p2=p1^2
}
p1-p2
}
Run Code Online (Sandbox Code Playgroud)
是否有可能检查是否将值p2传递给函数?(我找不到isset()- 功能或类似的东西.)
我有(或没有)$_GET['myvar']来自我的查询字符串的变量,我想检查这个变量是否存在,以及该值是否与if语句中的内容相对应:
我正在做和想的不是最好的方法:
if(isset($_GET['myvar']) && $_GET['myvar'] == 'something'): 做一点事
我的问题是,在没有声明变量两次的情况下,有没有办法做到这一点?
这是一个简单的案例,但想象一下,必须比较许多$myvar变量.
我试图在提交表单时调用特定的php函数,表单和php脚本都在同一页面中.我的代码在下面.(它不起作用,所以我需要帮助)
<html>
<body>
<form method="post" action="display()">
<input type="text" name="studentname">
<input type="submit" value="click">
</form>
<?php
function display()
{
echo "hello".$_POST["studentname"];
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) isset ×10
php ×8
variables ×3
javascript ×2
function ×1
if-statement ×1
jquery ×1
null ×1
r ×1
shorthand ×1