2 つの展開された文字列 (クエリの結果) の結果を比較していますが、array_intersect を使用して配列のオーバーラップを見つけると、残念ながら、各配列で最初に来るタグのオーバーラップしか受け取りません...たとえば、2 つの配列が次のようになっているとします。
配列 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)。
編集 contactarray を印刷するいくつかのテストを実行し、それらの連絡先にさまざまなタグ文字列を適用しました。他のいくつかの連絡先に 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;
}
}
}