【问题标题】:How do you check if something is stored in a PHP array?你如何检查某些东西是否存储在 PHP 数组中?
【发布时间】:2013-02-22 03:25:34
【问题描述】:

我觉得这个问题一定是以前在这个网站上问过的,但我一生都找不到确切的等价物。

我想检查多维 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 似乎没有给我我需要的东西。

谢谢。

【问题讨论】:

  • 类似$arr[0][visible] == 1 ?
  • 如果没有可用的内置函数,基本上你可以编写自己的函数。

标签: php search multidimensional-array


【解决方案1】:

老实说(imo),您最好的选择可能是编写自己的函数。

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

    return false;
}

如果你愿意,我确定你是否可以编写一个更通用的函数(即将“可见性”键作为 func arg 传递),但这取决于你。

【讨论】:

  • 为什么要检查“可见”键?只是举个例子?
  • @DjangoReinhardt 出于某种原因,我读到您想在帖子中检查可见性是否等于 1,但失败了。很高兴听到它起作用了!
【解决方案2】:

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

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;
}

//-------------这个函数适用于任何维度的数组,即使是数组(同构和异质)

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2012-03-12
    • 2017-02-12
    • 2022-11-29
    • 2012-05-11
    相关资源
    最近更新 更多