多维数组搜索

时间:2015-02-06 13:56:17

标签: php arrays multidimensional-array

我有以下数组:

Array
(
    [0] => Array
        (
            [6] => 2015-02-27 19:00
        )

    [1] => Array
        (
            [6] => 2015-02-27 20:00
        )

    [2] => Array
        (
            [6] => 2015-02-27 21:00
        )

)

“6”是一个类别,我想检查该类别是否与相应日期一起存在。

我有

$category = 7;
$datetocheck = "2015-02-27 20:00"

该函数应返回false。 如果我有

$category = 6;
$datetocheck = "2015-02-27 20:00"

该函数应返回true。

https://stackoverflow.com/a/12456356/1092632看起来像我想做的,但我无法让它发挥作用。也许这不是一个合适的功能。

任何暗示/帮助都非常感激。

// EDIT 我用过这个功能(来自Post上面)

function in_multiarray($elem, $array,$field)
{
    $top = sizeof($array) - 1;
    $bottom = 0;
    while($bottom <= $top)
    {
        if($array[$bottom][$field] == $elem)
            return true;
        else 
            if(is_array($array[$bottom][$field]))
                if(in_multiarray($elem, ($array[$bottom][$field])))
                    return true;

        $bottom++;
    }        
    return false;
}

但是当我使用它时

in_multiarray("2015-02-27 20:00",$myArray,6)

我得到未定义的索引错误。 我试过“in_array()”,但是这给了我6 = 7的真实。

1 个答案:

答案 0 :(得分:1)

试试这个:

$array = array(
        array(6 => '2015-02-27 19:00'),
        array(6 => '2015-02-27 20:00'),
        array(6 => '2015-02-27 21:00'));


    function search_in_array($search_in, $search_for){
        foreach($search_in as $arr){
            if(array_key_exists($search_for[0], $arr) 
                && in_array($search_for[1], array_values($arr)))
            return true;
        }

        return false;
    }


    var_dump(search_in_array($array, array(6, '2015-02-27 19:00')));