0

私はこのような連想配列を持っています。

$lang['lbl_mylabel1'] = array('key1' => 'value1');
$lang['lbl_mylabel2'] = array('key2' => 'value1');
$lang['lbl_mylabel3'] = array('key3' => 'value1');
$lang['lbl_mylabel4'] = array('key4' => 'value2');
$lang['lbl_mylabel5'] = array('key5' => 'value3');

value1そして、サブ配列の値を比較し、値が であるすべての要素を返すという名前の変数がありますvalue1

では、values1array_intersectの要素を返すために、または可能な効率的な方法をどのように使用できますか。$lang array

上記のコードの答えは、 の最初の 3 つの要素である必要があります$lang array

4

2 に答える 2

2

私はあなたが意味すると思います:

$result = array();
$value1 = 'value1';
foreach($lang['lbl_mylabel1'] as $la)
{
   if(in_array($value1)) 
   {
      $result[] = $la;
   }
}
于 2014-01-16T09:33:12.113 に答える
0

次のコードは、元の $lang 配列の構造を保持します。

$find = 'value1';
$result = array_filter($lang, function($rec) use ($find) {
    return in_array($find, $rec);
});

$result は次のようになります。

array (
  'lbl_mylabel1' => 
  array (
    'key1' => 'value1',
  ),
  'lbl_mylabel2' => 
  array (
    'key2' => 'value1',
  ),
  'lbl_mylabel3' => 
  array (
    'key3' => 'value1',
  ),
)
于 2014-01-16T09:37:53.543 に答える