check数组值是否存在于另一个数组中

时间:2014-09-29 19:24:22

标签: php arrays

我在表格中有2个字段

filed1               | filed2
ahmed,join,maya,omar | omar,maya

我通过2个数组获取数据,我想检查$ array1中的每个值是否存在于$ array2中

在我的情况下:如果$array1[omar]中存在$array2$array1[maya]中是否存在$array2或不存在。{elc

这是我的代码,没有奏效......它有什么问题?

$query = $db->query_first("SELECT * FROM table ");
$array1 = explode(",",$query[filed1]);
$array2 = explode(",",$query[filed2]);

foreach($array1 as $value)
{
    if (in_array($value,$array2))
    {
        //true
    }else{
        //false
    }
}

array1的输出:

Array ( [0] => maya [1] => omar [2] => ahmed [3] => join)

array2的输出:

Array ( [0] => omar [1] => maya )

我已经知道了问题的原因,而不是在代码中...每个行的基值的字段内容分别使用str_replace来删除行

$query = $db->query_first("SELECT * FROM table ");
$array1 = explode(",",$query[filed1]);
$array1 = str_replace("\n","",$array1);
$array2 = explode(",",$query[filed2]);
$array2 = str_replace("\n","",$array2);

foreach($array1 as $value)
{
    if (in_array($value,$array2))
    {
        //true
    }else{
        //false
    }
}

1 个答案:

答案 0 :(得分:1)

正如@MarkBaker所说,你想使用 array_intersect

  

array_intersect()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,密钥会被保留。

在你的情况下:

$array1 = explode(",",$query[filed1]);
$array2 = explode(",",$query[filed2]);

$intersect = array_intersect($array1, $array2);

由于您要求检查此数组是否为空,请执行以下操作:

if (empty($intersect))
    echo 'It is empty';