如何向PHP数组的指定索引中添加键值对?
解决PHP数组向指定子数组添加键值对的问题
问题场景
现有如下PHP数组:
$tblData[] = array( "Orange" => "Healthy", "Apple" => "Good", "Pizza" => "Bad", );
打印输出为:
Array ( [0] => Array ( [Orange] => Healthy [Apple] => Good [Pizza] => Bad ) )
执行$tblData[] = array("Hot dogs" => "Big No");后,数组会新增一个索引为1的子数组,但实际需求是将"Hot dogs" => "Big No"添加到索引[0]的子数组末尾,预期输出:
Array ( [0] => Array ( [Orange] => Healthy [Apple] => Good [Pizza] => Bad [Hot dogs] => Big No ) )
正确解决方案
方法1:直接赋值(最直观)
直接访问索引[0]的子数组,添加新的键值对:
$tblData[0]["Hot dogs"] = "Big No";
方法2:使用array_merge合并
如果需要批量合并多个键值对到子数组,可使用array_merge,注意要将合并结果重新赋值给$tblData[0]:
$tblData[0] = array_merge($tblData[0], array("Hot dogs" => "Big No"));
为什么之前的尝试失败?
- 用
$tblData[] = ...是向外层数组新增元素,而非修改已有子数组 - 使用
array_push时如果直接传入完整数组,会把整个数组作为一个元素添加到外层数组,而非目标子数组 - 使用
array_merge时如果没有将结果赋值回$tblData[0],原数组不会被修改
内容的提问来源于stack exchange,提问作者Noob YT
相关产品推荐
相关产品推荐

