我知道这个 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'])));
它正在检查字符串
>
中第一个字符之后的字符 $author['emailaddress']
。
如果
>
存在,则 update
数组 $sp
具有括号之间指定的值。
它询问
>
字符在字符串中的位置。 如果该字符位于第一个字符以外的任何位置,则将进入 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'])));
}
当然,它更冗长,但因此更容易理解,因此更容易维护。