PHP基础教程(91)PHP数组应用函数之向数组中添加元素:数组也能玩出花!深度解锁PHP数组添加元素的N种骚操作

第一章:别再用土办法了!数组添加的“三巨头”之争

各位码农朋友们,有没有那么一瞬间,你看着自己写的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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值