array_intersect用于子数组

时间:2014-01-16 09:27:43

标签: php arrays array-intersect

我有一个像这样的关联数组。

$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的所有元素。

那么我如何使用array_intersect或任何可能有效的方法将$lang array的元素返回给value1。

上述代码的答案应该是$lang array中的前3个元素。

2 个答案:

答案 0 :(得分:2)

我想你的意思是:

$result = array();
$value1 = 'value1';
foreach($lang['lbl_mylabel1'] as $la)
{
   if(in_array($value1)) 
   {
      $result[] = $la;
   }
}

答案 1 :(得分: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',
  ),
)