PHP转Go系列 | PHP8 这些新函数让你眼前一亮

大家好,我是码农先森。

在 PHP8 之前做字符串相关的检查操作比较麻烦,可读性也比较差,很容易踩坑。比如 strpos('Hello World', 'World') !== false 这行代码,时常容易看走眼,特别是在遇到紧急问题时,这种代码很让人抓狂。好在现在 PHP8 对相关的函数进行了简化,提高了可阅读性,比如 str_contains('Hello World', 'World') 这样就好理解多了,直接从字面意思就可以快速判断出来结果,这不就是 PHPer 的福音嘛。其实,如果熟悉 Go 的兄弟们就知道,在 Go 语言中从一开始就是这样的用法,这一点还是值得 PHP 语言学习的。当然,我们升级到 PHP8 之后,也可以这么爽快的编程了。

好,我们也来看看,之前的用法和现在 PHP8 做下对比,同时也看下 Go 语言中的用法,多看看不同语言的用法,也可以开拓一下技术视野。

检查字符串包含关系,新的写法简洁了许多。

php 复制代码
<?php

// 以前的写法
if (strpos('Hello World', 'World') !== false) {
    echo "找到了 World";
}

// PHP 8 的新写法
if (str_contains('Hello World', 'World')) {
    echo "找到了 World";
}

PHP8 和 Go 语言中就是类似的用法了。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    if strings.Contains("Hello, World!", "World") {
        fmt.Println("找到了 World")
    }
}

检查字符串的开头,之前的用法,我一眼还真是看不出来,也有可能是我水平菜~~,大佬勿喷。像 str_starts_with 这样用,就容易理解很多了。

php 复制代码
<?php

// 检查字符串开头
// 以前的写法
if (strpos("Hello, World", "World) === 0) {
    echo "以 Hello 开头";
}

// php8
// 检查字符串开头
if (str_starts_with("Hello, World", "Hello")) {
    echo "以 Hello 开头";
} 

PHP8 和 Go 语言中用法也是类似了,只是函数名称不一样而已,从字面的意思都很好理解。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    // 检查字符串开头
    if strings.HasPrefix("Hello, World", "Hello") {
        fmt.Println("以 Hello 开头")
    }
}

检查字符串的结尾,这个和上面的函数一下,没什么区别。

php 复制代码
<?php

// 以前的写法
// 检查字符串结尾
if (substr("Hello, World", -strlen("World")) === "World") {
    echo "以 World 结尾";
}

// php8
// 检查字符串结尾
if(str_ends_with("Hello, World", "World")) {
    echo "以 World 结尾";
}

Go 语言中也是类似玩法。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    // 检查字符串结尾
    if strings.HasSuffix("Hello, World", "World") {
        fmt.Println("以 World 结尾")
    }
}

说实话,PHP8 中的这三个新函数让字符串检查,变得非常直观,就像让代码说人话一样。这对我们程序员来说是一件大好事,提升可读性,减少 Bug 量,升级到 PHP8 之后,再也不用维护类似的屎山代码了。

每一次的升级都是在向好的过程中迈进,PHP8 的新函数不是锦上添花,而是真正能提升开发效率的利器。我们在编程的过程中也要乐于去尝试新的函数,有时候还是能起到事半功倍的效果的。

感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

相关推荐
BingoGo12 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack12 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082854 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe4 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5