PHP中通过$data[] = $api_content方式为数组添加值为何不会覆盖而是追加?
关于PHP数组
[]操作符行为的解答 这一现象是完全正确的,核心原因在于你用的$data[] = $api_content;语法本身就是PHP里专门用来向数组追加元素的操作,而不是覆盖数组内容。
具体来说:
- 如果你想要覆盖整个数组,应该直接使用赋值语句,比如
$data = $api_content;——这样每次循环都会把$data替换成当前的$api_content,循环结束后数组只会保留最后一次循环的$api_content值。 - 而
$data[] = ...的逻辑是:PHP会自动在数组的末尾添加一个新元素,并且自动分配一个比当前数组最大索引大1的键(针对索引数组而言)。所以每次循环执行这个语句时,都会把当前的$api_content追加到$data数组的最后,而不是替换掉整个数组。
举个简单的例子,假设你的循环执行3次,$api_content依次是"value1"、"value2"、"value3":
- 第一次循环后:
$data = ["value1"] - 第二次循环后:
$data = ["value1", "value2"] - 第三次循环后:
$data = ["value1", "value2", "value3"]
这就是为什么你看到数组内容被追加而不是覆盖的原因啦。
内容的提问来源于stack exchange,提问作者user1664377
相关产品推荐
相关产品推荐

