【发布时间】:2013-04-09 12:34:32
【问题描述】:
我正在比较两个爆炸字符串的结果(来自查询的结果),但是当我使用 array_intersect 查找数组的重叠时,不幸的是,我只收到了每个数组中首先出现的那些标签的重叠。 ..so 例如,如果两个数组看起来像这样:
数组1:
array(
[0]=> tag_a
[1]=> tag_b
)
数组2:
array(
[0]=> tag_a
[1]=> tag_b
)
Array_Intersect 仅返回 tag_a 作为匹配项。我预计 array_intersect 的行为会返回 tag_a 和 tab_b。
正如您稍后在我的代码中看到的那样,我使用匹配项(两个数组中都存在的标签)来构建数组contactarray。我可以构建数组,它只是不包含我期望的值(例如:tag_b)。
编辑我已经运行了几个打印联系人数组的测试,并将各种标签字符串应用于这些联系人,并且即使其他几个联系人有 tag_a,也只返回首先具有 tag_a 的联系人(在数组中),尽管它只是不是数组中的第一个。 想法?
if ($frequency == 'Weekly')
{
$data['query_tag'] = $this->db->get('tags');
foreach ($data['query_tag']->result() as $row2)
{
$contact_tags = $row2->tags;
$contact_tags_exploded = explode(",", $contact_tags);
$rule_tags_exploded = explode(",", $rule_tags);
$result = array_intersect($rule_tags_exploded, $contact_tags_exploded);
if(isset($result) && count($result) != 0){
$contactarray[] = $row2->contact_name;
}
}
}
【问题讨论】:
-
您只是检查
array_intersect的结果是否已设置并且它是否包含超过0 个项目。除此之外你什么也没做......我猜tag_b在那里,你只是没有使用它。 -
抱歉,再次阅读我的帖子,我不是很清楚......为了提供更多上下文,我已经运行了几个测试打印联系人数组并将各种标签字符串应用于这些联系人,只有即使其他几个联系人具有 tag_a,也会返回具有 tag_a 第一个(在数组中)的联系人,尽管它不是数组中的第一个。
-
@Mischa 重新格式化他的代码让你真正注意到了,你会注意到我不小心删除的
$符号。 -
@Fred,这是对another question 的编辑,我没有触及。我说的是您删除了 this question 上的缩进,这使问题更难阅读。
标签: php arrays codeigniter explode array-intersect