通过WordPress中的用户元数组中的键删除值

时间:2018-11-26 06:40:04

标签: php arrays wordpress multidimensional-array

我已在WordPress页面上将此数组设置为WordPress用户:

Array
(
    [0] => Array
        (
            [0] => 1509
            [1] => 1597
        )

)

要接收此数组,我需要这样做:

$get_ids = get_user_meta( 3, 'additional_ids', false );

太好了,到目前为止!现在,我遇到了一个小问题,因为例如,我需要从user_meta中删除值 1509 。因此,我很想尝试通过暂时有效的值来找出密钥:

$key = array_search( (int) $value, $get_ids[0], true );

所以我现在发现密钥是[0]。但是,现在我该如何从用户元数据中删除它,这又是一种聪明的方法,并保存为我的元数据数组保存后如下所示:

Array
(
    [0] => Array
        (
            [0] => 1597
        )

)

这是我尝试过的:

//Unset element to delete from the array
unset( $get_ids[0][ $key ] );


//Save it again in the database
update_user_meta( 3, 'additional_ids', $get_ids, false );

但是当我这样做时,数组完全被弄乱了,不再可读。

2 个答案:

答案 0 :(得分:4)

我们需要解决的第一件事是如何将元添加到用户。如果使用add_user_meta,则可以在同一元键下添加多个元值。像这样:

//add_user_meta( $user_id, $meta_key, $meta_value, $unique );
add_user_meta(3, 'additional_ids', 1597, false);
add_user_meta(3, 'additional_ids', 1509, false);

执行此操作会将两者 1509和1597添加到用户元additional_ids

如果您以这种方式添加了元字段,它将允许您使用get_user_meta来获取所有值,如下所示:

$additional_ids = get_user_meta(3, 'additional_ids', false);

哪个将返回这样的数组:

Array (
    [0] => 1597
    [1] => 1509
)

不过,您可以通过使用delete_user_meta();删除特定值来从数组中删除任何值,而无需首先获取该数组。

赞:

delete_user_meta( 3, 'additional_ids', 1509 );

这意味着,如果您再次获得其他ID,它将看起来像这样:

$additional_ids = get_user_meta(3, 'additional_ids', false);
print_r($additional_ids);
//prints out:
Array (
    [0] => 1597
)

该函数内的第三个参数将确保仅删除具有该特定值的元数据。

以这种方式进行操作就无需尝试查找与要删除的值相关联的键,并且还可以确保您不会意外地弄乱可能与之相关的其他任何值数组。

答案 1 :(得分:1)

执行unset()之后,您只需要使用array_values()更新$ get_ids [0]即可再次为数组重新定基

//Unset element to delete from the array
unset( $get_ids[0][ $key ] );

// rebase the array
$get_ids[0] = array_values( $get_ids[0] );

//Save it again in the database
update_user_meta( 3, 'additional_ids', $get_ids, false );