strpos 有什么作用?

问题描述 投票:0回答:2

我知道这个 foreach() 语句正在从输入到它的数组中的每个项目中打印出字段“name_first”...

foreach ($data as $author) { 
    print get('name_first', $author) . 
    " " . get('emailaddress', $author) .
    "<br/>";
    if(strpos($author['emailaddress'], ">")) { 
        $sp->update($listName, $author['id'], array('emailaddress'=> email_from_link($author['emailaddress'])));
    }

但是有人可以解释一下最后一个 if 语句的作用吗?这对我来说真的没有任何意义。

if(strpos($author['emailaddress'], ">")) { 
    $sp->update($listName, $author['id'], array('emailaddress'=> email_from_link($author['emailaddress'])));
php strpos
2个回答
5
投票

它正在检查字符串

>
中第一个字符之后的字符
$author['emailaddress']

如果

>
存在,则
update
数组
$sp
具有括号之间指定的值。


4
投票

它询问

>
字符在字符串中的位置。 如果该字符位于第一个字符以外的任何位置,则将进入 if 块。

这就是我认为的草率/懒惰编程 - 养成以相同方式处理整数和布尔值的习惯是一个坏主意,特别是当像

strpos
这样的函数可以返回整数 0 和 false 时:

来自文档

警告此函数可能返回布尔值 FALSE,但也可能返回 计算结果为 FALSE 的非布尔值。

更多这样的代码最终会让人们感到困惑,就像你的例子一样。显式编码要好得多:

$index = strpos($author['emailaddress'], '>');

if(FALSE === $index) {
    // Handle error
} 
else if($index > 0) {
    $sp->update($listName, $author['id'], array('emailaddress'=> email_from_link($author['emailaddress'])));
}

当然,它更冗长,但因此更容易理解,因此更容易维护

© www.soinside.com 2019 - 2024. All rights reserved.