如何从其他数组值中过滤数组值并返回新数组?

时间:2011-08-30 09:26:07

标签: php arrays loops filter array-filter

我有两个数组:$all_languages$taken_languages。一个包含所有语言(如200或者其他),但是之前选择的第二语言(从0到200)。

我需要从$taken_languages删除所有已采用的语言($all_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;

}

感谢您的建议!

2 个答案:

答案 0 :(得分:10)

PHP具有内置函数(以及其他所有内容:P)

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

PHP Manual (array_diff)

答案 1 :(得分:3)

array_diff功能对您有用。 http://php.net/manual/en/function.array-diff.php