比较多个多维数组

时间:2013-09-19 18:06:28

标签: php

我希望标题是描述性的,我被困住了,所以我会尽力描述这个问题。

我需要在我正在构建的搜索中对床型进行比较。一个是搜索表单中的$ _POST数组($ array1)。它列出了床型,例如它看起来像:

array('King', 'Queen', 'Full');

我的第二个数组($ array2)来自我的CMS的个人资料信息,如下所示:

array(
"field_bed_types" => array(                
  "und" => array(
    "0" => array(
      "value" => "King"
            )

    "1" => array(
      "value" => "Double"
            )
        )
    )
)

他们在个人资料中选择的床位类型越多(有6个),$ array2中的条目越多"1"

我想要实现它从$ array1中获取搜索类型,并查看$ array2是否包含$ array1中引用的所有床类型。如果没有,我正在进行continue;并转到我的foreach循环中的下一个用户个人资料记录。

在上面的这个例子中,假设$ array2只有King和Double而$ array1正在寻找King,Queen和Full床,搜索应该返回FALSE然后继续到下一条记录。我的问题是,我该怎么做?

我希望这是有道理的,如果您有任何其他问题,请告诉我。

注意: Drupal是这里使用的CMS,但出于各种目的,这仍然是一个多维数组,我只是提到我的CMS作为一种方式来说我没有一种改变数据结构的方法。

1 个答案:

答案 0 :(得分:1)

试试这个

foreach($array1 as $key=>$type)
{
    $return[$key]=false;
    foreach($array2['field_bed_types']['und'] as $typeArray)
    {
        if ($type==$typeArray['value'])
            $return[$key]=true;
    }
}
$failed=false;
foreach($return as $match)
{
    if($match==flase)
    {
        $failed=true;
    }
}
if($failed==false)
{
    // do stuff if passed
}