You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将关联数组中的WP_Post_Type对象前置到对象数组头部且无多余索引

解决方案

你遇到的问题核心是array_unshift、[]赋值都是针对无键名的索引数组设计的,操作关联数组时会自动生成数字索引、把传入的整个数组作为单元素塞入,就会出现你说的多层嵌套问题。可以用以下两种方案实现:

方法1:数组加运算符(兼容所有PHP版本,推荐)

直接用PHP数组的+运算符合并即可,该运算符会保留两个数组的字符串键名,且键名冲突时优先保留左侧数组的值,正好符合你要把$prepend的元素前置的需求:

$post_types = $prepend + $post_types;

执行后$post_types的第一个元素就是键为post的WP_Post_Type对象,原有元素的键名和顺序不会发生变化,也不会出现多余的嵌套层。

方法2:数组展开语法(仅支持PHP 7.4及以上版本)

如果你的运行环境PHP版本≥7.4,也可以用更直观的展开语法合并:

$post_types = [...$prepend, ...$post_types];

错误方法原因说明

  1. $post_types[] = $prepend:是给数组新增一个数字索引的元素,值为整个$prepend数组,自然会多出一层0索引,且插入到数组末尾
  2. array_unshift($post_types , $prepend):是往数组头部塞入单个元素,同样把整个$prepend作为值传入,自动分配数字索引,也会出现嵌套
  3. array_unshift($post_types, array_column($prepend, 'post')):array_column用于提取二维数组的列值,你的$prepend是一维关联数组,自然提取不到值,只会返回空数组

内容的提问来源于stack exchange,提问作者CyberJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:36:10