第一章:别再用土办法了!数组添加的“三巨头”之争
各位码农朋友们,有没有那么一瞬间,你看着自己写的PHP数组操作代码,突然觉得它像一碗隔夜的泡面——能吃,但总透着那么点不新鲜?今天咱们就来聊聊数组添加元素这件“小事”。我敢打赌,至少一半人还在用着最原始的$arr[] = $value,另外40%可能沉迷于array_push()无法自拔,剩下的10%……估计正在用array_merge()干着一些“诡异”的事情。
先来看个真实案例:上周我review代码,看到有位小哥写了这么一段:
$userData = ['name' => '张三', 'age' => 25];
$newData = ['gender' => '男'];
for ($i = 0; $i < count($newData); $i++) {
array_push($userData, $newData[$i]);
}
// 结果:['name' => '张三', 'age' => 25, 0 => '男']
好家伙,键名全丢了!这位小哥挠着头问我:“李哥,我这gender怎么变0了?” 看着他那日益稀疏的头顶,我决定好好聊聊这个话题。
第二章:基础操作三剑客,你真的用对了吗?
2.1 方括号追加法:简单粗暴但有效
$fruits = ['苹果', '香蕉'];
$fruits[] = '橙子';
// 输出:['苹果', '香蕉', '橙子']
这就是PHP最经典的“追加大法”。它的特点就三个字:快、准、不废话。适合90%的日常场景。
但注意啦!这里有个新手必踩的坑:
$arr = [];
$arr[] = '第一个';
$arr[5] = '跳着来';
$arr[] = '猜猜我是谁?';
// 结果:[0=>'第一个', 5=>'跳着来', 6=>'猜猜我是谁?']
看到没?PHP会自动帮你续上数字索引。这既是优点也是缺点——当你需要连续数字索引时很省心,但如果你想要的是关联数组……嘿嘿,翻车现场预定。
2.2 array_push():听起来很专业的“装逼利器”
$stack = [];
array_push($stack, '苹果', '香蕉', '橙子');
// 可以一次性追加多个哦!
很多教程都爱吹array_push(),说什么“函数式编程更优雅”。但说实话,在单元素添加时,它比[]慢了将近30%。不过它有个绝活——批量添加:
// 需要添加多个元素时
$cart = [];
$itemsToAdd = ['手机', '耳机', '充电宝', '贴膜'];
array_push($cart, ...$itemsToAdd);
2.3 关联数组专属:键名添加法
$user = ['name' => '王五'];
$user['age'] = 28; // 新增
$user['name'] = '赵六'; // 修改,注意这不是添加!
这里有个面试常考题:“如何判断是新增还是修改?”
答案是:用array_key_exists()或者isset()先检查一下。
if (!array_key_exists('age', $user)) {
$user['age'] = 28; // 确定是新增
}
第三章:进阶玩法,让你代码档次提升10倍
3.1 array_merge():数组的“联姻大法”
这是我最爱用的函数之一,但也是坑最多的。
场景1:合并两个索引数组
$arr1 = ['a', 'b'];
$arr2 = ['c', 'd'];
$result = array_merge($arr1, $arr2);
// 完美!['a', 'b', 'c', 'd']
场景2:合并关联数组(键名相同)
$config1 = ['theme' => 'dark', 'lang' => 'zh'];
$config2 = ['theme' => 'light', 'size' => 'large'];
$result = array_merge($config1

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



