2017-01-18 15 views
1

PHP 5.5以降では、連想配列の配列に特定のキーと値のペアが含まれているかどうかをチェックする方法を教えてください。たとえば:PHP:連想配列の配列内の特定のキーに関連付けられた戻り値

$some_array = array(
      array(
       "value"=> 1, 
       "k1"=> "austin", 
       "k2"=> "texas", 
       "k3"=> "us" 
      ), 
      array(
       "value"=> 15, 
       "k1"=> "bali", 
       "k2"=> "ubud", 
       "k3"=> "indonesia" 
      ), 
      array(
       "value"=> 26, 
       "k1"=> "hyd", 
       "k2"=> "telangana", 
       "k3"=> "india" 
      ) 
)); 

にはどうすればK1 = 'バリ'、K2 = 'ウブド' とK3 = 'インドネシアに関連付けられた値を返すのですか?配列内にその組み合わせが存在するかどうかを調べるために各要素をループすることができますが、これを処理する簡単な方法がありますか?

答えて

0

キーと値のターゲット配列がある場合、array_diff_assocを使用して、ターゲット配列内のすべてのキー/値の組み合わせに一致する子配列のみを含むようにメイン配列をフィルタリングできます。 array_filterコールバックインサイド

$target =array(
    "k1"=> "bali", 
    "k2"=> "ubud", 
    "k3"=> "indonesia" 
); 

$matches = array_filter($some_array, function($item) use ($target) { 
    return !array_diff_assoc($target, $item); 
}); 

array_diff_assoc$itemには存在しない$targetのすべてのキー/値のペアを返しますので、それらすべて一致していれば、あなたは空の配列を取得します。 !でその結果を否定すると、一致する配列の場合はtrue、一致しない配列の場合はfalseが返されます。

$matchesは、キーと値のペアのセットに一致するすべての子配列の配列になります。一致しない場合は空の配列になります。

関連する問題