Avatar billede ralf_l Nybegynder
19. oktober 2013 - 23:32 Der er 1 kommentar

Tjek om data fra en array er i en anden array

Jeg har en bruger array som ser ud som følger:

Array ( [0] => Array ( [id] => 1 [navn] => Niels [by] => Århus ) [1] => Array ( [id] => 2 [navn] => Martin [by] => Odense ) [2] => Array ( [id] => 3 [navn] => Christian [by] => Herning ) .... osv )



Derud over har jeg en array, med nogle udvalgte byer:

Array ( [0] => Array ( [by] => Århus ) [1] => Array ( [by] => Odense ) )


Jeg vil gerne lave et tjek, om byerne i array 2 er i array 1.
Så hvis en af brugerne bpr i byen. Vil byen blive skrevet med rødt.

Lige pt udskriver jeg bruger data med en foreach lykke, og prøver at finde match med in_array(). Det virker bare ikke.

Jeg har gjort følgende
if(in_array($arrayet['by'], $arrayto)){}
Avatar billede arne_v Ekspert
20. oktober 2013 - 01:30 #1
Det maa kunne goeres paa mange maader, men her er en:

<?php
function all_in($needle, $haystack, $key) {
    return count(array_uintersect($needle, $haystack, function($v1, $v2) use($key) { return $v1[$key] == $v2[$key] ? 0 : 1; })) == count($needle);
}

function test($needle, $haystack) {
    if(all_in($needle, $haystack, 'by')) {
        echo "Found\r\n";
    } else {
        echo "Not found\r\n";
    }   
}

$haystack = array(array('id' => 1, 'navn' => 'Niels', 'by' => 'Århus'), array('id' => 2, 'navn' => 'Martin', 'by' => 'Odense'), array ('id' => 3, 'navn' => 'Christian', 'by' => 'Herning'));
$needle1 = array(array ('by' => 'Århus'), array ('by' => 'Odense'));
$needle2 = array(array ('by' => 'Århus'), array ('by' => 'Esbjerg'));

test($needle1, $haystack);
test($needle2, $haystack);
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester