今天我们来聊聊PHP数组添加键和值的那点事。数组这东西,简单起来像喝水,复杂起来像喝了一锅开水,烫得你嗷嗷叫。
我们来看最基本的操作。假设你有一个数组:
$myArray = array();
你想往里面添加一个键值对,比如键是'name',值是'John',你可以这样操作:
$myArray['name'] = 'John';
简单?就像往冰箱里塞了一瓶可乐。
但如果你手贱,写成了这样:
注意,这里键名'name'没加引号。PHP会以为你定义了一个常量,然后报错。所以,记住,键名要加引号,除非你想被PHP的报错信息鞭打。
我们稍微复杂一点。假设你有一个多维数组:
$myArray = array(
'person' => array(
'name' => 'John',
'age' => 30
)
);
你想在'person'下面再加一个键值对,比如'email' => 'john@example.com',你可以这样操作:
$myArray['person']['email'] = 'john@example.com';
这样,数组就变成了这样:
'age' => 30,
'email' => 'john@example.com'
)
);
看起来还行?但如果你不小心写错了键名,比如:
$myArray['Person']['email'] = 'john@example.com';

注意,这里的'Person'首字母大写了。PHP不会报错,但你会发现,你的数组里凭空多了一个'Person'键,而原来的'person'键还在那里,像极了你前女友和你现女友碰面的尴尬场景。
所以,大小写敏感这个坑,一定要注意。
我们来看看更复杂的情况。假设你有一个数组,里面存了一些用户信息:
$users = array(
array(
'id' => 1,
),
);
你想给每个用户添加一个'status'键,值为'active',你可以这样操作:
foreach ($users as &$user) {
$user['status'] = 'active';
}
注意,这里的&$user是引用传递,这样你可以直接修改原数组。如果你不小心写成这样:
你会发现,数组并没有被修改。这是因为$user是值传递,修改的是局部变量,而不是原数组。这个坑,相信很多人踩过。
我们来看看PHP数组的一些高级操作。$myArray = array('apple', 'banana', 'cherry');
你想在数组开头添加一个元素,比如'orange',你可以用array_unshift函数:
array_unshift($myArray, 'orange');
这样,数组就变成了:
$myArray = array('orange', 'apple', 'banana', 'cherry');
简单?就像往队伍前面插队一样简单。
如果你想在数组末尾添加一个元素,比如'kiwi',你可以用array_push函数:
array_push($myArray, 'kiwi');
$myArray = array('orange', 'apple', 'banana', 'cherry', 'kiwi');
这个操作就像排队买奶茶,大家都乖乖地往后站。
array_push($myArray, 'kiwi', 'lemon', 'mango');
你会发现,数组变成了:
$myArray = array('orange', 'apple', 'banana', 'cherry', 'kiwi', 'lemon', 'mango');
没错,array_push可以一次性添加多个元素。这个功能,有时候很方便,有时候也让人头疼。
我们来看看PHP数组的合并操作。假设你有两个数组:
$array1 = array('apple', 'banana');
$array2 = array('cherry', 'date');
你想把这两个数组合并成一个,你可以用array_merge函数:
$newArray = array_merge($array1, $array2);
结果是这样的:
$newArray = array('apple', 'banana', 'cherry', 'date');
看起来还行?但如果你有相同的键名,比如:
$array1 = array('fruit' => 'apple', 'color' => 'red');
$array2 = array('fruit' => 'banana', 'taste' => 'sweet');
你再用array_merge:
你会发现,'fruit'键的值被覆盖了:
$newArray = array('fruit' => 'banana', 'color' => 'red', 'taste' => 'sweet');
所以,合并数组时,相同键名的值会被覆盖,这一点要注意。
如果你不想被覆盖,可以用+操作符:
$newArray = $array1 + $array2;
结果是这样的:
$newArray = array('fruit' => 'apple', 'color' => 'red', 'taste' => 'sweet');
这里的规则是,左边数组的键值优先保留,右边数组的键值只有在左边数组没有的情况下才添加。
我们来看看PHP数组的键值对删除操作。$myArray = array('name' => 'John', 'age' => 30, 'email' => 'john@example.com');
你想删掉'age'这个键值对,你可以用unset函数:
unset($myArray['age']);

$myArray = array('name' => 'John', 'email' => 'john@example.com');
简单?就像从冰箱里扔出一瓶过期的可乐。
但如果你不小心写成了这样:
unset($myArray[age]);
注意,这里的'age'没加引号。所以,键名要加引号,除非你想被PHP报错信息再次鞭打。
我们来看看PHP数组的遍历操作。你想遍历这个数组,打印每个元素,你可以这样操作:
foreach ($myArray as $value) {
echo $value . "\n";
}
输出结果是:
apple
banana
cherry
简单?就像数钱一样简单。
但如果你还想获取键名,你可以这样操作:
foreach ($myArray as $key => $value) {
echo $key . ':' . $value . "\n";
}
输出结果是:
0: apple
1: banana
2: cherry
这个操作,有时候很有用,特别是当你需要处理键值对的时候。
好了,关于PHP数组添加键和值的那点事,我们就聊到这里。虽然看起来简单,但里面的坑不少。希望你能从这篇冷幽默的文章中学到点什么,至少下次不会被PHP的报错信息鞭打到怀疑人生。
536

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



