在 PHP 中匹配单个数组和多维数组

问题描述

抱歉,我无法在 stackoverflow 中找到任何答案,因此发布此问题。我正在尝试匹配这两个数组 - 如果 $sc 在 $sc_array 中的值返回 true。

$sc = array('Male','3','5','1','26-35');

$sc_array = array(
                    'gender' => array('Male','Female'),'flow' => array("1","2"),'water' => array("5"),'fat' => array("3"),'gene' => array("1","2","3","4","5"),'ankle' => array("3",'type' => array("1","5","6"),'age' => array("19-25","26-35","36-45","46-55","56-70","71-99")
                    );

我正在尝试将 $sc[0] 与 $sc_array['gender] 匹配;等等。如果所有这些都匹配,则应返回 true,否则为 false。这是我到目前为止所做的工作,但有很多警告和通知

function find_sc_in_scvalue($sc,$sc_array){
    foreach ($sc_array as $item)
    {   
        $inner_array[] = $item;
            for ($i=0; $i<count($sc); $i++){
                if(in_array($sc[$i],$inner_array[$i])){
                    $result[$i] =  "true";
                }
                else $result[$i] = "false";
            }
    }

    return $result;
}

这将返回一个正确显示“真”和“假”的数组。 它还显示未定义的偏移量通知(我找到了 array_pad 解决方案)和关于 inner_array[$i] 不是数组的警告。 (我知道不是,但我不知道我还应该如何匹配它们?)

请帮我为此写一个好的解决方案。谢谢。

我在下面的答案中提供了完美的解决方案。

解决方法

我被这个问题困住了 2 天多,我在发布这个问题后写了另一个代码,它似乎工作得很好。欢迎提出任何优化建议。

$result1 = find_sc_in_scvalue($sc,$sc_array) ? "Match" : "Not Found";

function find_sc_in_scvalue($needle,$haystack){
    foreach ($haystack as $item)
    {   
        $array[] = $item;
    }
    for ($i=0; $i<count($needle); $i++){
        if(in_array($needle[$i],$array[$i])){
            $result[] = "True";
        }
        else $result[] = "False";

    }
    if(in_array("False",$result)){
     return false; 
    } else return true;
}