我尝试了很多方法,我有一个数组:
array(1) { [0]=> string(113) "23138,19031,22951,22951,22962,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858" }
尝试:
$a = array_map("unserialize", array_unique(array_map("serialize", $a)));
var_dump($a);
或者
$a = array_unique($a);
var_dump($a);
和
$a = array_values(array_unique($a));
var_dump($a);
没什么,我仍然得到重复的值,完整的代码将是:
$user_id = get_current_user_id();
$postid = $post->ID;
$userPosts= get_user_meta( $user_id, 'save_post', TRUE );
$userPosts = str_replace(' ', '', $userPosts);
$a = explode(', ', $userPosts);
$a = array_values(array_unique($a));
var_dump($a);
update_user_meta( $user_id, 'save_post', $a );
答案 0 :(得分:3)
您应首先使用explode()
从字符串构建数组:
$x = "23138,19031,22951,22951,22962,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858";
print_r(array_unique(explode(',', $x)));
给出
Array
(
[0] => 23138
[1] => 19031
[2] => 22951
[4] => 22962
[5] => 18858
)
答案 1 :(得分:0)
您的数组只包含一个值:字符串"23138,19031,22951,22951,22962,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858"
。
您必须使用explode()
函数将此字符串拆分为多个部分,然后将其结果传递给array_unique()
以删除重复项:
$input = array("23138,19031,22951,22951,22962,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858,18858");
$pieces = explode(',', $input[0]);
$noDups = array_unique($pieces);
// Check the outcome
print_r($noDups);
输出结果为:
Array
(
[0] => 23138
[1] => 19031
[2] => 22951
[4] => 22962
[5] => 18858
)
如果您需要以字符串形式返回值(以逗号分隔),则可以使用implode()
。
答案 2 :(得分:0)
$userPosts = str_replace(' ', '', $userPosts);
$a = explode(', ', $userPosts);
你移除空格然后你试图用comma space
爆炸,但是没有空格,你只是删除它们,所以输出应该是一个项目。
您尝试删除重复项的一个长字符串不起作用。
两种可能的解决方案是删除空格 或者从爆炸中移除空间。
我建议删除空格,因为它可能不需要,因此只使用CPU。
$user_id = get_current_user_id();
$postid = $post->ID;
$userPosts= get_user_meta($user_id, 'save_post', TRUE );
$a = explode(', ', $userPosts);
$a = array_values(array_unique($a));
var_dump($a);
update_user_meta( $user_id, 'save_post', $a );
从评论编辑似乎$userPosts
中没有空格,因此工作解决方案是从爆炸中删除空间。
$user_id = get_current_user_id();
$postid = $post->ID;
$userPosts= get_user_meta($user_id, 'save_post', TRUE );
$a = explode(',', $userPosts);
$a = array_values(array_unique($a));
var_dump($a);
update_user_meta( $user_id, 'save_post', $a );