2011-08-30 2 views
3

J'ai deux tableaux: $all_languages et $taken_languages. L'un contient toutes les langues (comme 200 ou quelque chose), mais la seconde - les langues qui ont été choisies auparavant (de 0 à 200).Comment filtrer des valeurs de tableau à partir d'autres valeurs de tableaux et renvoyer un nouveau tableau?

Je dois supprimer toutes les langues qui ont été prises ($taken_languages) de $all_languages et retourner un nouveau tableau - $available_languages.

Ma solution était de deux boucles, mais, d'abord, cela ne fonctionne pas comme prévu, deuxièmement, c'est «pas cool» et je crois qu'il existe de meilleures solutions! Pouvez-vous me montrer le bon chemin?

C'est ce que je l'ai fait avant, mais, comme je le disais, cela ne fonctionne pas comme prévu ...

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; 

} 

Merci à des conseils!

Répondre

9

PHP a une fonction intégrée pour cela (et à peu près tout le reste: P)

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

PHP Manual (array_diff)

Questions connexes