李涛自留地
回到顶部

PHP array_merge_recursive() 和 array_replace() 详解:数组合并与替换

前言 合并数组时 array_merge() 是首选,但遇到关联数组时会有覆盖行为,多维数组时又会有键名重复问题。array_merge_recursive() 和 array_replace() 提供了不同的合并策略。 array_merge_recursive() 递归合并 array_merg…

PHP array_diff() 和 array_intersect() 详解:数组集合运算

前言 做数据对比时经常需要找出两个数组的差集和交集。array_diff() 和 array_intersect() 就是干这个的。这篇文章把它们和 array_merge() 的区别理清楚。 array_diff() 差集 array_diff(array1, array2, ...) - 返回在…

PHP array_rand()、array_sum()、array_product() 常用聚合函数

抽奖、随机推荐、统计求和——这些需求太常见了,PHP 的数组聚合函数刚好派上用场。这篇文章整理几个最实用的聚合函数。 ## array_rand() 随机选取 array_rand(array, n) - 从数组中随机选出 n 个键名。注意:返回的是键名,不是值。 ` ` ### 多个随机键名 ``…

PHP array_slice() 和 array_splice() 详解:数组切片与截取

分页功能中需要从数组中截取一页的数据。array_slice()和 array_splice() 都能做到,但一个返回新数组,一个修改原数组。这篇文章把这两个函数的区别和使用场景理清楚。 array_slice()基本用法 array_slice(array, offset, length) - 从…

PHP array_reduce() 函数详解:数组归约与聚合

最近在处理一段数据处理代码时,发现用 for 循环累加、计数、拼接字符串的代码太丑了。后来了解了array_reduce() 函数,发现它能把这些操作浓缩到几行代码里。 这篇文章把array_reduce()的各种用法、实战场景和注意事项整理出来。 array_reduce()基本用法 array_…

PHP in_array()、array_search()、array_key_exists() 查找函数对比

最近写权限检查函数时,需要频繁判断一个 ID 是否在允许列表中。用 in_array($id, $arr) 查了老半天,后来发现把数组反转后,array_key_exists() 的性能高出几个数量级。 这篇文章聊聊array_flip()和 array_key_exists() 的配合使用,以及常…

PHP explode() 和 implode() 函数详解:字符串与数组互转

PHP 中最常用的两个字符串/数组转换函数就是 explode() 和 implode()。一个把字符串切分成数组,一个把数组拼接成字符串。虽然简单,但实际使用中还是有不少细节和坑。 这篇文章把这两个函数的用法、技巧、常见场景都整理出来。 explode():字符串转数组 explode(separ…

服务器内存不足OOM killed进程?排查服务器内存不足优化实战

昨晚12点收到服务器告警,PHP-FPM进程被OOM Killer干掉了,网站直接502。排查发现是Redis缓存没设置上限,疯狂涨内存。这次把完整的排查和优化流程写下来。\n\n 什么是OOM Killer? OOM是"Out Of Memory"的缩写。当Linux服务器内存用完时,内核会启动O…

宝塔面板网站502 Bad Gateway报错的N种原因和解决方法

昨天下午有个客户的网站突然报502错误,后台还能打开但前端打不开。排查了一圈发现是php-fpm进程挂了。把完整的排查流程记录下来,宝塔用户遇到502时照着做就行。\n\n 什么是502错误? 502 Bad Gateway是HTTP状态码,意思是"网关错误"。在宝塔面板的场景下,通常是Nginx无…

Css实现在图片悬停时显示另外一张图片效果实例

有时候我们在前端页面开发的时候,想要达到当我们把鼠标悬停在一张图片上,让另外一张图片(例如一个小图标)显示在这张图片上,这个时候我们应该怎么做呢?其实这种效果在电影网站上使用的比较频繁,主要是鼠标悬停的时候显示出播放的图标,点击图片链接后就会进入视频详情页面,其实使用JavaScript或者是jQu…