我已在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 );
但是当我这样做时,数组完全被弄乱了,不再可读。
答案 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 );