如何检查PHP数组中是否存储了某些内容?

时间:2013-02-22 03:25:35

标签: php search multidimensional-array

我有一种感觉,这个问题一定是在这个网站上提出过的,但是对于我的生活,我找不到相同的等价物。

我想检查多维PHP array中是否存在特定值。例如:

Array ( 
    [0] => 
    Array ( 
        [id] => 1 
        [publishDate] => 2013-02-22 01:51:39 
        [visible] => 1 
    ) 
    [1] => 
    Array ( 
        [id] => 4 
        [publishDate] => 2013-02-22 02:49:58 
        [visible] => 1 
    ) 
    [2] => 
    Array ( 
        [id] => 7 
        [publishDate] => 2013-02-22 02:50:21 
        [visible] => 1 
    ) 
)

id键下是否存在“1”? (它存在于publishDate密钥和visible密钥中,但我不想检查这些字段。)

所以基本上“1”,“4”和“7”将返回TRUE。虽然其他一切都会返回FALSE。

必须这样,但array_searcharray_key_exists似乎没有给我我需要的东西。

感谢。

2 个答案:

答案 0 :(得分:2)

老实说(imo),你最好的选择可能只是写自己的功能。

function visibleID($array, $id)
{
    foreach ($array as $entry)
    {
        if ($entry['id'] === $id)
            return true;
    }

    return false;
}

我确定你是否可以编写一个更通用的函数(例如,将'visiblity'键作为func arg传递),但这取决于你。

答案 1 :(得分:0)

您可以编写更多通用函数来检查键值对通过扩展上面的函数:

function visibleID($array, $id)
{
    foreach ($array as $entry)
    {
        if( is_array($entry) ) {
        array_map('visibleID',$entry); //-------------call back function 
        } else {
            if ($entry['id'] === $id)
             return true;
       }
    }

     return false;
}

// -------------这个函数可以在任何维度数组上工作,即使是两个数组(同质和异质)