isset php函数是否检查字符串长度

isset php函数是否检查字符串长度,php,wordpress,Php,Wordpress,在我的网站的注册表单中,以下php代码控制用户名字段: if (!isset($value[4])){ $return = $register_msg['_register_some_msg']; } 这个代码是做什么的?它是否具有检查字符串长度的功能? 目前它强制使用至少3个字符的名字,但正如我搜索的那样,strlen()函数检查不存在的字符串长度 是,此代码正在检查字符串长度 看起来您有两个数组 $value是一个数字数组,您可以检查是否设置了第5个元素。(索引从0开始) $re

在我的网站的注册表单中,以下php代码控制用户名字段:

if (!isset($value[4])){
    $return = $register_msg['_register_some_msg'];
} 
这个代码是做什么的?它是否具有检查字符串长度的功能?
目前它强制使用至少3个字符的名字,但正如我搜索的那样,
strlen()
函数检查不存在的字符串长度

是,此代码正在检查字符串长度

看起来您有两个数组

$value
是一个数字数组,您可以检查是否设置了第5个元素。(索引从0开始)

$register\u msg
是一个关联数组,它使用键而不是数字作为索引。这里您将key
\u register\u some\u msg
的值分配给返回变量

另一个选项是,
$value
是一个字符串,通过将每个字母作为数组键引用来检查它们是一种错误的做法:

<?php

$x = 'abcd';
echo $x[3];

//output: d

这里的
isset()
方法只需验证
$value[4]
(您的对象、字符串或其他)是否存在。

多一点代码至少有助于确定
$value
实际设置的位置。如果我错了,请纠正我,但是AFAIK
isset
只检查内存中是否存在变量名,并且该变量名是否有值。它不检查其他任何东西。例如,如果在其中放入布尔值
false
。编辑问题突然更改,因此此注释不再有效。是的,这是检查字符串长度。字符串可以通过数组语法访问其各自的字符,因此这是为了检查
4
th位置是否未设置。
$value
很可能是字符串,
!isset($value[4])
是检查字符串长度的一种基本方法。天哪,这太恶心了,lol,忘了@castis那个疯狂的坏习惯,更新答案为什么是坏习惯?当然,对于没有用C语言编程的人来说,它不是真正可读和清晰的,但为什么它是不好的做法呢?字符串只是字符的数组,所以您应该能够使用数组语法访问它们。“这只是让外行感到困惑而已。”Piskvor我写评论时正在考虑这一点。没有时间检查。谢谢!对不起,我是新来的php,它还不清楚,我。这段代码是WordPress的membership pro插件的一部分,它只控制用户在注册表单的“名字”字段中输入的内容$值是用户输入的作为其名字的字符串。正如我在代码中提到的,系统接受3个或更多字符的名字。delboy说“然后你检查是否设置了第5个元素”,但结果不同。字符串可以像字符数组一样写入。例如:
$string='name'$string[1]应返回第二个元素,因此它返回字符“a”。在您的代码中,该方法检查第5个元素是否为空,这是检查字符串长度是否正确的一种方法。感谢这一伟大且易于理解的解释,但指定字符串长度似乎不是一种好方法。我可以简单地删除这行代码并改用strlen()函数吗?移除它会有什么问题吗?first name字段中唯一存在的其他代码是:case'first_name':if(!preg_match('/^[\x{0600}-\x{06FF}]*$/u',$value)){$return=$register_msg['ihc_register_firstname_error_msg'];}我正在使用最新版本的“确实是会员制pro”插件,我想知道他们为什么使用这个糟糕的isset()函数来检查字符串长度,而不是在他们的代码中使用strlen()函数!!!!!实际上,您可以使用strlen()方法代替isset()方法。如果要在项目中使用strlen(),请按原样使用:
If(strlen($value)>3){$return=$register\u msg['''u register\u some\u msg'];}
。试试看,如果有用的话告诉我;)