2011-08-30 120 views
3

我有两个阵列:$all_languages$taken_languages。一个包含所有语言(如200或者其他),但是之前已经选择的第二语言(从0到200)。如何从另一个数组值中过滤数组值并返回新数组?

我需要从$all_languages中删除已采取的所有语言($taken_languages)并返回新数组 - $available_languages

我的解决方案是两个循环,但是,首先,它不像预期的那样工作,第二 - 这不是很酷,我相信有更好的解决方案!你能指点我到正确的道路吗?

这是因为我说我以前做过,但是,如预期它不工作...

if (!empty($taken_languages)) { 

    foreach ($all_languages as $language) { 

     foreach ($taken_languages as $taken_language) { 

      if ($taken_language != $language) { 

       $available_languages[] = $language; 

       break; 

      } 

     } 

    } 

} else { 

    $available_languages = $all_languages; 

} 

谢谢指教!

回答

9

PHP有一个内置的功能,这(和只是一切:P)

$available_languages = array_diff($all_languages, $taken_languages); 

PHP Manual (array_diff)