分享一些实用的PHP函数(对比js/ts实现)

来源:站长平台作者:陈平安
导读:本期聚焦于小伙伴创作的《分享一些实用的PHP函数(对比js/ts实现)》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《分享一些实用的PHP函数(对比js/ts实现)》有用,将其分享出去将是对创作者最好的鼓励。

分享一些实用的PHP函数(对比js/ts实现)

分享一些实用的PHP函数(对比js/ts实现)

在Web开发中,PHP和JavaScript/TypeScript是最常用的后端与前端(及全栈)语言。由于两者的设计哲学和运行环境不同,实现相同业务逻辑时的内置函数差异较大。理解并熟练运用这些差异,能够帮助开发者在前后端之间无缝切换思维,提升开发效率。本文将分享一些日常开发中非常实用的PHP函数,并与JS/TS的实现进行对比分析。

一、数组去重 / 提取唯一值

在处理列表数据时,去重是最常见的操作之一。

PHP实现: PHP提供了原生的array_unique函数,但需要注意它会保留第一个出现的键名,且转换后键名可能不连续,通常配合array_values重置键名。

$arr = [1, 2, 2, 3, 3, 4];
$uniqueArr = array_values(array_unique($arr));
// 结果: [1, 2, 3, 4]

JS/TS实现: 借助ES6的Set对象,代码极其简洁,且天然保持了顺序和连续的索引。

const arr = [1, 2, 2, 3, 3, 4];
const uniqueArr = [...new Set(arr)];
// 结果: [1, 2, 3, 4]

二、根据指定键名对多维数组/对象排序

从数据库或API获取的数据通常是多维数组(或对象数组),经常需要按某个字段进行排序。

PHP实现: PHP使用usort配合自定义回调函数。PHP 7+ 引入了太空船操作符<=>,使得排序比较异常简洁。

$data = [
    ['name' => 'A', 'age' => 30],
    ['name' => 'B', 'age' => 20],
    ['name' => 'C', 'age' => 25],
];
usort($data, function($a, $b) {
    return $a['age'] <=> $b['age']; // 按age升序排列
});
// 结果: B(20), C(25), A(30)

JS/TS实现: 同样使用sort方法配合比较函数,写法与PHP类似,但JS的减法即可实现数字比较。

const data = [
    { name: 'A', age: 30 },
    { name: 'B', age: 20 },
    { name: 'C', age: 25 },
];
data.sort((a, b) => a.age - b.age); // 按age升序排列
// 结果: B(20), C(25), A(30)

三、解析URL查询参数

在处理URL时,经常需要提取Query String中的参数转化为关联数组或对象。

PHP实现: PHP内置parse_urlparse_str,非常强大,parse_str会自动将结果写入第二个变量中。

$url = "https://www.ipipp.com/index.php?name=test&id=123";
$queryStr = parse_url($url, PHP_URL_QUERY); // 获取 "name=test&id=123"
parse_str($queryStr, $params);
// $params 结果: ['name' => 'test', 'id' => '123']

JS/TS实现: 在浏览器环境或Node.js中,可以使用URLURLSearchParamsAPI,更加面向对象。

const url = new URL("https://www.ipipp.com/index.php?name=test&id=123");
const params = Object.fromEntries(url.searchParams.entries());
// params 结果: { name: 'test', id: '123' }

四、生成URL查询字符串

与解析相反,将数组或对象拼接为合法的URL参数也是高频操作。

PHP实现: http_build_query不仅支持一维数组,还完美支持多维数组的编码,非常实用。

$data = ['foo' => 'bar', 'baz' => 'boom', 'cow' => 'milk'];
$queryString = http_build_query($data);
// 结果: "foo=bar&baz=boom&cow=milk"

JS/TS实现: 借助URLSearchParams可以快速实现,且自动处理了URL编码。

const data = { foo: 'bar', baz: 'boom', cow: 'milk' };
const queryString = new URLSearchParams(data).toString();
// 结果: "foo=bar&baz=boom&cow=milk"

五、安全的HTML实体编码与解码

在Web应用中,防止XSS攻击是重中之重,输出到HTML的用户输入必须进行转义。

PHP实现: htmlspecialchars将特殊字符转换为HTML实体,htmlspecialchars_decode则相反。建议始终加上ENT_QUOTESUTF-8参数。

$str = "Test";
$encoded = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
// 结果: "<a href='test'>Test</a>"
$decoded = htmlspecialchars_decode($encoded, ENT_QUOTES);
// 结果恢复原样

JS/TS实现: 浏览器环境中原生缺少直接的全局编解码函数,通常需要借助DOM操作或引入第三方库(如he库)。下面是一种利用DOM API的简易转义方法:

const str = "Test";
// 简易转义实现
const div = document.createElement('div');
div.appendChild(document.createTextNode(str));
const encoded = div.innerHTML;
// 结果: "<a href='test'>Test</a>"

// 解码
div.innerHTML = encoded;
const decoded = div.textContent;
// 结果恢复原样

总结

PHP作为老牌后端语言,在数组、字符串和HTTP协议层面的内置函数极其丰富,往往一个函数就能搞定JS中需要组合操作或引入工具库才能实现的功能。而JS/TS依托ES标准的不断进化以及现代API的补充,代码风格更加偏向函数式和面向对象,写法愈发简洁。掌握两者在常用函数上的差异与对应关系,可以极大地提高我们在全栈开发中的效率。

PHPJavaScriptTypeScript函数对比数组去重URL解析

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。