0

所以我有多个帖子。两大类。作者发表的某些帖子仅属于一个类别。但其他作者的帖子可能属于这两个类别。我需要删除重复项。我一次只能有一个作者帖子。所以我只是要默认到两者中更重要的(商店帖子而不是服务帖子)类别并列出该帖子。

但我不知道如何去做。

以下是我获取数据并处理它以输出的方式:

        $allPosts = get_post_type_data('archive', 'all');   
        for($i = 0; $i < count($allPosts); $i++){
            if($allPosts[$i]['post_type'] == 'antique-shops'){
                $shopData[] = $allPosts[$i];
            }
            if($allPosts[$i]['post_type'] == 'member-dealers'){
                $memberData[] = $allPosts[$i];
            }
            if($allPosts[$i]['post_type'] == 'services'){
                $serviceData[] = $allPosts[$i];
            }
        }
        $business = array_merge((array)$shopData, (array)$serviceData);
        function cmp($a, $b){
            return strcmp(rewrite_name($a['custom']['wpcf-business-contact'][0]), rewrite_name($b['custom']['wpcf-business-contact'][0]));
        }
        usort($business, "cmp");
        for($i = 0; $i < count($business); $i++){
            if($i % 2){
                $className = 'odd';
            } else{
                $className = 'even';
            }
            $check = check_member($business[$i]['custom']['wpcf-business-contact'][0], $memberData);
            if($check[0] == 'true'){
                echo display_listing('member-dealers', $check[1], $business[$i], $className);
            }
        }

因此,在获取所有数据后,我将 Antique Shops 和 Services 合并到一个数组中,并让成员拥有自己的数据数组。

然后对于每个业务数据项,我检查业务联系人以查看它是否与成员数据匹配。

$check返回数组值。$check[0]= true/false $check[1]= 与特定成员有关的数据数组。

display_listing()只需获取每个企业/成员输入的数据并将其输出。

我想我需要在根据成员数据检查业务或服务之前检查重复项。

每个古董店或服务都有一个业务联系人:$business[$i]['custom']['wpcf-business-contact'][0]用于检查该业务联系人是否作为会员存在。

因此,如果$business[$i]['custom']['wpcf-business-contact'][0]同时属于古董店和服务,则从数组中删除与该人有关的服务数据。

我试过这个(在循环内):

if(($key = array_search($business[$i]['custom']['wpcf-business-contact'][0], $business)) !== false){
    unset($business[$key]);
}

在这种情况下删除重复项有什么有用的指导吗?

4

1 回答 1

0

我添加了一个名为的函数,该函数check_contact()从数组中获取每个联系人姓名,$serviceData并根据所有$shopData数组联系人姓名对其进行检查。如果找到匹配项,则返回 true

在合并到一个数组中供以后使用之前,从数组中删除所有真正的匹配项。$business

$shopData我在and合并之前放置了以下代码$serviceData

        function check_contact($name, $data){
            for($i = 0; $i < count($data); $i++){
                if($name == $data[$i]['custom']['wpcf-business-contact'][0]){
                    $return = 'true';
                }
            }
            return $return;
        }
        for($i = 0; $i < count($serviceData); $i++){
            $contact = check_contact($serviceData[$i]['custom']['wpcf-business-contact'][0], $shopData);
            if($contact == 'true'){
                unset($serviceData[$i]);
            }
        }
于 2012-04-06T16:26:51.167 回答