Wordpress 用户元数组合并

Wordpress User Meta Array Merge

提问人:Jamie Gamauf 提问时间:11/16/2023 最后编辑:Sebastian KaczmarekJamie Gamauf 更新时间:11/16/2023 访问量:35

问:

我创建了一个名为“hca_recent”的新用户元数据。我正在从 ajax 调用中提取数据并将其作为数组添加到元数据中。

$hca_recent_array = array( 
  'recent_count' => $new_recent_count,
  'post_id' => $post_id, 
  'video_id' => get_post_meta($post_id, "__cvm_video_id", true), 
  'post_title' => $_REQUEST['post_title'], 
  'video_url' => $_REQUEST['data_url'], 
);
$hca_recent = update_user_meta(get_current_user_id(), "hca_recent", $hca_recent_array);

这将输出以下数组:

Array
(
  [recent_count] => 42
  [post_id] => 667
  [video_id] => 881950864
  [post_title] => Receiver Blocking: COD + Dots Drill | Tee Martin
  [video_url] => https://player.vimeo.com/video/881950864?h=e9b41820da&autoplay=0&muted=0&loop=0&title=1&byline=1&portrait=1&color&dnt=0&background=0&transparent=0
)

这一切都很好。当触发另一个ajax调用时,我想添加到这个数组中。这就是问题发生的地方。我得到现有的用户元,如下所示:

$hca_recent_array_old = get_user_meta(get_current_user_id(), 'hca_recent', false);

然后,我想将现有数组与新的ajax调用事件合并。

$result_array = array_merge($hca_recent_array_old, $hca_recent_array);
$hca_recent = update_user_meta(get_current_user_id(), "hca_recent", $result_array);

我得到这个输出:

Array
(
    [0] => Array
        (
            [recent_count] => 42
            [post_id] => 667
            [video_id] => 881950864
            [post_title] => Receiver Blocking: COD + Dots Drill | Tee Martin
            [video_url] => https://player.vimeo.com/video/881950864?h=e9b41820da&autoplay=0&muted=0&loop=0&title=1&byline=1&portrait=1&color&dnt=0&background=0&transparent=0
        )

    [recent_count] => 43
    [post_id] => 695
    [video_id] => 881950748
    [post_title] => Tee Martin | Youth Coaching Keys to Success
    [video_url] => https://player.vimeo.com/video/881950748?h=d3b0944767&autoplay=0&muted=0&loop=0&title=1&byline=1&portrait=1&color&dnt=0&background=0&transparent=0
)

我需要这个数组与 [0]、[1]、[2] 等正确合并。任何帮助都非常感谢。

合并或重新创建数组的每个选项。

php 数组 wordpress 用户元数据

评论

0赞 CBroe 11/16/2023
有点难说,但我想你可能想要array_merge($hca_recent_array_old, [$hca_recent_array]);

答:

0赞 Sebastian Kaczmarek 11/16/2023 #1

问题是您将数组保存为用户元表中的字符串,然后在读取它时,您将新数组与字符串值(表示数组,但仍然是字符串)合并,从而生成您显示的数组。

解决方案是以不同的格式(例如 JSON)将数组保存在元表中。它将允许您在读取后将其解析为有效数组。

下面是一个示例。

像这样保存您的数组:

$hca_recent = update_user_meta(get_current_user_id(), "hca_recent", json_encode($hca_recent_array)); // json_encode() it

这将导致在表中保存类似内容的内容:

{ "recent_count":42, "post_id":667, "video_id": 881950864, "post_title": "Receiver Blocking: COD + Dots Drill | Tee Martin", "video_url": "https://player.vimeo.com/video/881950864?h=e9b41820da&autoplay=0&muted=0&loop=0&title=1&byline=1&portrait=1&color&dnt=0&background=0&transparent=0" }

然后,像这样阅读:

$hca_recent_array_old = get_user_meta(get_current_user_id(), 'hca_recent', false);
$hca_recent_old_parsed = json_decode($hca_recent_array_old); // now json_decode() it

然后你可以像这样更新 Meta:

$result_array = array_merge($hca_recent_old_parsed, $hca_recent_array); // merge the parsed array
$hca_recent = update_user_meta(get_current_user_id(), "hca_recent", json_encode($result_array)); // json_encode() it again

评论

0赞 Jamie Gamauf 11/17/2023
谢谢。我确实必须将(数组)添加到旧数组中。如果该值为空或不存在,则返回 null 结果。 有一个问题:它们array_merge覆盖原始数组。也许我不清楚。我希望保留旧数组并将新数组添加到其中。因此,它变成了一个我可以添加到的新多维数组。$result_array = array_merge((array)$hca_recent_old_parsed, $hca_recent_array); // merge the parsed array