0

この質問はこのサイトで以前に尋ねられたに違いないと感じていますが、私の人生では、正確に同等のものを見つけることができません.

多次元に特定の値が存在するかどうかを確認したい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_search必要array_key_existsなものが得られないようです。

ありがとう。

4

2 に答える 2

2

正直なところ(imo)、おそらく最善の策は、独自の関数を作成することです。

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

    return false;
}

必要に応じて、より一般的な関数を記述できるかどうか (つまり、'visiblity' キーを func arg として渡す) ができると確信していますが、それはあなた次第です。

于 2013-02-22T03:31:08.107 に答える
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;
}

//------------- この関数は、配列 (同種および異種) の両方を含め、任意の次元配列で機能します

于 2013-02-22T05:36:35.560 に答える