将相似的字符串值组合成唯一的

时间:2020-10-29 15:02:50

标签: php arrays wordpress string post-meta

我正在从Wordpress CPT中获取帖子元,它会分别返回多个字符串形式而不是数组,如下所示:

$data = $calendar->data();
foreach ($data as $event) { 
    $days = get_post_meta( $event->ID, 'sp_day', true );
    var_dump($days);
}

字符串(1)“ 1”字符串(1)“ 1”字符串(1)“ 1”字符串(1)“ 1”字符串(1)“ 1” 字符串(1)“ 1”字符串(1)“ 2”字符串(1)“ 2”字符串(1)“ 2”字符串(1)“ 2” 字符串(1)“ 2”字符串(1)“ 2”字符串(1)“ 3”字符串(1)“ 3”字符串(1)“ 3” 字符串(1)“ 3”字符串(1)“ 3”字符串(1)“ 3”字符串(1)“ 4”字符串(1)“ 4” 字符串(1)“ 4”字符串(1)“ 4”字符串(1)“ 4”字符串(1)“ 4”字符串(0)“” 字符串(0)“”字符串(0)“”字符串(0)“”字符串(0)“”字符串(0)“”

我试图将其转换为$days = array(get_post_meta( $event->ID, 'sp_day', true ));这样的数组,转储值是:

array(1){[0] =>字符串(1)“ 1”}数组(1){[0] =>字符串(1)“ 1”} 数组(1){[0] =>字符串(1)“ 1”}数组(1){[0] =>字符串(1)“ 1”} 数组(1){[0] =>字符串(1)“ 1”}数组(1){[0] =>字符串(1)“ 1”} 数组(1){[0] =>字符串(1)“ 2”}数组(1){[0] =>字符串(1)“ 2”} 数组(1){[0] =>字符串(1)“ 2”}数组(1){[0] =>字符串(1)“ 2”} 数组(1){[0] =>字符串(1)“ 2”}数组(1){[0] =>字符串(1)“ 2”} 数组(1){[0] =>字符串(1)“ 3”}数组(1){[0] =>字符串(1)“ 3”} 数组(1){[0] =>字符串(1)“ 3”}数组(1){[0] =>字符串(1)“ 3”} 数组(1){[0] =>字符串(1)“ 3”}数组(1){[0] =>字符串(1)“ 3”} 数组(1){[0] =>字符串(1)“ 4”}数组(1){[0] =>字符串(1)“ 4”} 数组(1){[0] =>字符串(1)“ 4”}数组(1){[0] =>字符串(1)“ 4”} 数组(1){[0] =>字符串(1)“ 4”}数组(1){[0] =>字符串(1)“ 4”} array(1){[0] =>字符串(0)“”} array(1){[0] =>字符串(0)“”} array(1){[0] =>字符串(0)“”} array(1){[0] =>字符串(0)“”} 数组(1){[0] =>字符串(0)“”}数组(1){[0] =>字符串(0)“”}

比我尝试过array_merge()array_unique()

以上步骤均未解决问题。如您所见,我们有多次重复的值,相反,我希望它们唯一,以便仅一次获得每个值,例如“ 1、2、3、4、5等”。

建议受到高度赞赏

1 个答案:

答案 0 :(得分:1)

您可以在for循环之前添加一个空数组,在for循环内部可以检查该项目是否存在于数组中,如果不存在,则将其添加到数组中。

$data = $calendar->data();
$result = [];
foreach ($data as $event) { 
    $days = get_post_meta( $event->ID, 'sp_day', true );
    if(! in_array($days, $result)) {
        $result[] = $days;
    }

    
}
var_dump($result);