【问题标题】:Appending arrays in PHP在 PHP 中添加数组
【发布时间】:2011-10-09 21:07:58
【问题描述】:

我在 Wordpress 中有三个表示类别 ID 的数组,格式均为 $base_cat_id['term_id']。我想要做的是使用以下功能将帖子分配给其中三个类别:

wp_set_post_categories($entry['post_id'], $base_cat_id + $generic_n_cat_id + $specific_n_cat_id);

但是,当我这样做时,帖子只分配到前两个类别。我是否使用正确的方法将这些数组添加在一起?

编辑:

我通过执行以下操作使其工作:

$cat_ids = array($base_cat_id['term_id'], $generic_a_cat_id['term_id'], $specific_a_cat_id['term_id']);
wp_set_post_categories($entry['post_id'], $cat_ids);

不漂亮。但我发现使用具有相同字符串 ID 的 array_merge 不起作用,因为它会覆盖值。联合也不起作用,因为我只能对两个数组使用联合。如果有更好的方法,请告诉我!

【问题讨论】:

  • 请注意,+ 数组运算符执行perform a union。因此,我相信您的问题在于数组格式。

标签: php arrays append


【解决方案1】:

使用函数 array_merge()。它的参数与您要合并的数组一样多,它返回那些合并到一个数组中的数组,因此它返回一个数组。

像这样:

wp_set_post_categories($entry['post_id'], array_merge($base_cat_id, $generic_n_cat_id, $specific_n_cat_id));

警告:如果您的数组是多级的,那么您可能会得到奇怪的结果。欲了解更多信息,请查看:http://php.net/manual/en/function.array-merge.php

【讨论】:

  • +1 击败我得到相同的答案。我还添加了文档链接。
  • 我刚试过这个,帖子只分配到最后一个类别。似乎 array_merge 没有将所有三个类别放在一起。
【解决方案2】:

我不太确定您的数组中除了“term_id”之外还有什么,但请尝试使用这个:

wp_set_post_categories($entry['post_id'], array_merge($base_cat_id, $generic_n_cat_id, $specific_n_cat_id));

【讨论】:

  • 所有变量都有“term_id”。
猜你喜欢
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多