首页 > 解决方案 > 将相似的字符串值组合成唯一的值

问题描述

我正在从 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" string(1) "4" string(1) "4" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string( 0) ""

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

数组(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”}数组( 1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" }} 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) " " } 数组(1) { [0]=> 字符串(0) "" }} 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) "" } 数组(1) { [0]=> 字符串(0) " " } 数组(1) { [0]=> 字符串(0) "" }

比我尝试的array_merge()array_unique()

以上步骤均未解决问题。正如您所看到的,我们多次重复值,而不是我希望它们是唯一的,以便每个值只获取一次,例如“1、2、3、4、5 等”。

建议高度赞赏

标签: phparrayswordpressstringpost-meta

解决方案


您可以在 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);


推荐阅读