Question

Peut-être que je suis fou d'aller, mais je aurais pu juré qu'il y avait une fonction de base de PHP qui a pris deux tableaux comme arguments:

$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');

effectue une intersection où les valeurs de $a de tableau sont vérifiées pour les collisions avec les touches $b de tableau. De retour quelque chose comme

array('1'=>'apples', '3'=>'kiwis');

Est-ce que cette fonction existe (ce qui me manquait dans la documentation), ou est-il un moyen très optimisé pour obtenir la même chose?

Était-ce utile?

La solution

essayez d'utiliser les touches {array_flip commutateurs avec leurs valeurs} et utilisez array_intersect () sur votre exemple:

$c = array_flip($b); // so you have your original b-array
$intersect = array_intersect($a,c);

Autres conseils

Je ne suis pas 100% clair ce que vous voulez. Voulez-vous vérifier les valeurs d'un $ contre TOUCHES de $ b?

Il y a quelques fonctions Intersection:

http://php.net/manual/en/function.array -intersect.php http://www.php.net/manual/en/ function.array-Intersection-key.php

Mais peut-être vous avez besoin:

http://www.php.net/manual /en/function.array-intersect-ukey.php de sorte que vous pouvez définir votre propre fonction pour faire correspondre les touches et / ou des valeurs.

Faites simple foreach pour itérer le premier réseau et obtenir les valeurs correspondantes du deuxième tableau:

$output = array();
foreach ($a as $key) {
    if (array_key_exists($key, $b)) {
        $output[$key] = $b[$key];
    }
}

Juste une variation de la réponse Gumbo, devrait être plus efficace que les tests sur les touches sont effectuées juste avant d'entrer dans la boucle.

$intersection = array_intersect($a, array_keys($b));
$result=array();
foreach ($intersection as $key) {
    $result[$k]=$b[$k];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top