Array vergelijken met 2 dimensionale array en matches tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Matthias deckers

matthias deckers

09/05/2011 12:19:38
Quote Anchor link
hallo,

zoals tittel al zegt ik heb een array $inrange die bevatten postcode na een berekening van afstand

nu moet ik deze vergelijken met een 2dimensionale array waarin installateursID en een postcode in zitten de instalateur die matchen met postcodes inrange moeten getoond worden ( de id's van deze installateurs)

maar geraak er niet uit
// gemaakte arrays
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$inrange = array()
$postcodesinstallateur = array(array());


// vul de array in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$postcodesinstallateur[][0] = $showinstal2[0];
$postcodesinstallateur[][1] = $showinstal2[1];


dacht aan zo iets
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
        foreach($inrange as $match)
        {
        
        if(in_array($match, $postcodeinstallateur))
        
        $resultinrange.....
        
        }


Alvast bedankt
Gewijzigd op 09/05/2011 13:57:39 door Matthias deckers
 
PHP hulp

PHP hulp

21/11/2024 19:47:14
 
- Mark -

- Mark -

09/05/2011 12:29:06
Quote Anchor link
Kun je een paar voorbeeld array's geven met daarin wat gegevens?
 
Matthias deckers

matthias deckers

09/05/2011 12:41:19
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$inrange = array(9150, 7210, 2800, 9180);

// aray(postcode,installateurID)

$postcodeinstallateur = array(array(9150, 23),array(2700, 14),array(9180,45));


dan zou na vergelijking alleen nog moete bekomen installateurid 23 en 45
Gewijzigd op 09/05/2011 12:41:46 door matthias deckers
 
- Mark -

- Mark -

09/05/2011 12:55:22
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?

        $result
= array();
        

        foreach($postcodeinstallateur as $data){
            
            if(in_array($data[0], $inrange)){
                
                $result[] = $data[1];
            }
        }


?>


Ik vindt je opbouw alleen een beetje raar.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$postcodeinstallateur
= array(23 => 9150, 14 => 2700, 45 => 9180);

?>


Lijkt me een stuk overzichtelijker.
 
Matthias deckers

matthias deckers

09/05/2011 13:00:52
Quote Anchor link
ooh ja idd maar was maar een voorbeeld :-) het script vult de arrays toch in dus die zie ik niet

ik was dus niet ver weg van oplossingen eens testen

bedankt
 
Kees Schepers

kees Schepers

09/05/2011 13:03:31
Quote Anchor link
Kan dit niet gemakkelijker met array_intersect of array_intersect_uassoc?
 
Matthias deckers

matthias deckers

09/05/2011 13:21:24
Quote Anchor link
ik krijg daar nog volgende warning op en result is leeg

Warning: Invalid argument supplied for foreach() in /home/domotica/domains/domus.md-design.be/public_html/domoticamodel.php on line 855

Edit : typefoutje nog in al weg :-)



Toevoeging op 09/05/2011 13:51:08:

die array result blijft leeg ? ik heb net al mijn arrays getest of er waardes in staan en alles word correct aangevuld
Gewijzigd op 09/05/2011 13:22:41 door matthias deckers
 
- SanThe -

- SanThe -

09/05/2011 13:56:49
Quote Anchor link
Kees Schepers op 09/05/2011 13:03:31:
Kan dit niet gemakkelijker met array_intersect of array_intersect_uassoc?


Werkt inderdaad zeer netjes.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$arr1
  = array(23 => 9150, 14 => 2700, 45 => 9180, 89 => 9150);
$arr2 = array(9150, 7210, 2800, 9180);

print_r(array_intersect($arr1, $arr2));
?>


Geeft:
Array (
[23] => 9150
[45] => 9180
[89] => 9150
)
Gewijzigd op 09/05/2011 13:57:49 door - SanThe -
 
Matthias deckers

matthias deckers

09/05/2011 14:14:44
Quote Anchor link
ik krijg nog steeds leeg resultaat met array_intersect ook


hoe maak ik mijn array aan dan ? ik had $postcodesinstallateur = aray(array(); moet gevuld worden met $showinstal2[1] als id en $showinstal2[0] als postcode
Gewijzigd op 09/05/2011 14:23:13 door matthias deckers
 
- SanThe -

- SanThe -

09/05/2011 14:22:34
Quote Anchor link
Zie mijn post. Zo moet je de array's vullen. Het id is de key en de postcode is de value. Het andere array heeft alleen value's en die keys zijn niet belangrijk.
 
Matthias deckers

matthias deckers

09/05/2011 14:25:02
Quote Anchor link
hoe bedoel je ? ik vul zo en word ook gevuld maar resultaat blijft leeg en toch moet er een match zijn

$postcodesinstallateur[][0] = $showinstal2[1];
$postcodesinstallateur[][1] = $showinstal2[0];

ik moet uiteindelijk ook alleen id als resultaat hebben want dit moet nog eens in een query om de naam van installateur op te roepen
Gewijzigd op 09/05/2011 14:25:58 door matthias deckers
 
- SanThe -

- SanThe -

09/05/2011 14:32:36
Quote Anchor link
Jouw manier klopt in het geheel niet. Jij maakt nu 2 records aan in $postcodesinstallateur met beiden een array met slecht 1 waarde.

Doe het zo:
$postcodesinstallateur[$showinstal2[1]] = $showinstal2[0];

$showinstal2[1] moet het id zijn.
$showinstal2[0] is dan de postcode.
 
Matthias deckers

matthias deckers

09/05/2011 14:48:13
Quote Anchor link
ben volledig de kluts kwijt nu hoor

met dit zou ik die array moete opvullen ?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?     for($i=0; $i <= count($instalateursid); $i++) // postocdes in array plaatsen
    {
        $instalateurnaambepaling = "SELECT postcode,instalateurID FROM tblInstalateur WHERE instalateurID = '$instalateursid[$i]'";
        
        $resinstal2 = mysql_query($instalateurnaambepaling) or die(mysql_error());
        $num_rows = mysql_num_rows($resinstal2);
        
        for($b=1; $b <= $num_rows; $b++)
        {

            if($num_rows == 0 || $instalateursid[$i] == null ) {
            }
else{
            $showinstal2 = mysql_fetch_row($resinstal2);
            //echo "<b>Installateur: </b>".$showinstal2[0]."<b> Email: </b>".$showinstal2[1]."<br /><br />";
            // array vullen

            $postcodesinstallateur[$showinstal2[1]] = $showinstal2[0];
            }
        }
    }
?>
krijg maar geen resultaat man man

Toevoeging op 09/05/2011 15:01:44:

op 1 of andere vage manier werkt het plots geen idee wat ik gedaan heb maarja
bedankt iedereen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.