所以我有多个帖子。两类。作者的一些帖子只属于一类。但其他作者的帖子可能同时属于这两类。我需要删除重复项。我一次只能有一个作者帖子。因此,我将默认使用这两个类别中更重要的类别(商店帖子和服务帖子),并列出该帖子。
但我不知道该怎么做。
以下是我如何获得数据并对其进行处理以输出:
$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);
}
}
因此,在获得所有数据后,我将古董店和服务合并在一个数组中,并让成员拥有自己的数据数组。
然后,对于每个业务数据项,我检查业务联系人,看看它是否与成员数据匹配。
$check
返回数组值。$check[0]
=真/假$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]);
}
关于在这种情况下删除重复项,有什么有用的指导吗?
我添加了一个名为check_contact()
的函数,它从$serviceData
数组中获取每个联系人名称,并将其与所有$shopData
数组联系人名称进行检查。如果找到匹配项,则返回true。
所有真匹配在合并到一个$business
阵列中以供以后使用之前都会从阵列中删除。
我在$shopData
和$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]);
}
}