PHP: Zoeken in twee multidimensionale array's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Aaron van den Berg

Aaron van den Berg

02/05/2018 21:25:13
Quote Anchor link
Ik heb twee multidimensionale arrays.
De eerste array bestaat uit: 1 Typenummer [TypeNumber], en een of meer nummers[Number] die daar bij horen.
(zie afbeelding hieronder)
Afbeelding


De tweede array bestaat ook uit een typenummer, die is hetzelfde als de vorige array.
Alleen deze array heeft ook nog Number's.
De bedoeling is dat hij van elk TypeNumber de juiste Number's ophaald en in een apparte array zet.
Afbeelding


Ik hoop dat mijn afbeeldingen mij een beetje kunnen verduidelijken met wat ik bedoel, want heb het gevoel dat ik het niet heel goed uitleg..

Ik ben hier al een tijd mee bezig en kom er maar niet uit.

Ik hoop dat iemand mij hiermee kan helpen.

Alvast bedankt!
Gewijzigd op 02/05/2018 21:26:30 door Aaron van den Berg
 
PHP hulp

PHP hulp

26/11/2024 14:29:17
 
Rob Doemaarwat

Rob Doemaarwat

02/05/2018 23:00:39
Quote Anchor link
Aaron van den Berg op 02/05/2018 21:25:13:
De bedoeling is dat hij van elk TypeNumber de juiste Number's ophaald en in een apparte array zet.

Maar dat is toch wat je al in array1 hebt staan?

Geef anders even aan wat je nu precies als eindresultaat wilt hebben (op basis van deze array 1 en 2). Maar volgens mij moet je gewoon met een paar foreach's aan de slag.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach($array1 as $record) if($record['TypeNumber'] == $wat_ik_zoek){ ... }
Gewijzigd op 02/05/2018 23:01:03 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2018 23:08:38
Quote Anchor link
Array #2 is nogal een zooi. Textuele indexes gemixt met numerieke indexes? Kun je de manier waarop die arrays worden opgebouwd aanpassen of wordt het zo over de schutting gegooid?

Array #1 zou je als volgt kunnen prepareren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$results
= array(); // vorm: TypeNumber => array(Number => Description)
// verzamel nummers uit array #1

foreach ($array1 as $sub) {
    foreach ($sub['Number'] as $value) {
        $results[$sub['TypeNumber']][$value] = false;
    }
}

?>

Maar vervolgens moet je op een nogal omslachtige manier zoeken in array #2 :/.

Dit zal zoiets worden:
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
<?php
foreach ($array2 as $sub) {
    // is dit array interessant?
    if (isset($results[$sub['TypeNumber']])) {
        // zoek in $sub en kijk of het subarray hiervan een Number veld heeft
        $typeNumber = $sub['TypeNumber'];
        foreach ($sub as $subsub) {
            if (isset($subsub['Number']) && isset($results[$typeNumber][$subsub['Number']])) {
                $results[$typeNumber][$subsub['Number']] = $subsub['PropertyDescription'];
            }
        }
    }
}

?>

Dit garandeert mogelijk niet dat alle Number velden Description waarden hebben, tenzij array #2 voor alle Numbers (uit array #1) een Description bevat.
Gewijzigd op 03/05/2018 14:43:05 door Thomas van den Heuvel
 
Aaron van den Berg

Aaron van den Berg

04/05/2018 13:54:49
Quote Anchor link
Heel erg bedankt Thomas! Ik ben hierdoor een heel stuk verder gekomen. En heb mijn probleem dankzij jou opgelost!

Thomas van den Heuvel op 02/05/2018 23:08:38:
Array #2 is nogal een zooi. Textuele indexes gemixt met numerieke indexes? Kun je de manier waarop die arrays worden opgebouwd aanpassen of wordt het zo over de schutting gegooid?

Array #1 zou je als volgt kunnen prepareren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$results
= array(); // vorm: TypeNumber => array(Number => Description)
// verzamel nummers uit array #1

foreach ($array1 as $sub) {
    foreach ($sub['Number'] as $value) {
        $results[$sub['TypeNumber']][$value] = false;
    }
}

?>

Maar vervolgens moet je op een nogal omslachtige manier zoeken in array #2 :/.

Dit zal zoiets worden:
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
<?php
foreach ($array2 as $sub) {
    // is dit array interessant?
    if (isset($results[$sub['TypeNumber']])) {
        // zoek in $sub en kijk of het subarray hiervan een Number veld heeft
        $typeNumber = $sub['TypeNumber'];
        foreach ($sub as $subsub) {
            if (isset($subsub['Number']) && isset($results[$typeNumber][$subsub['Number']])) {
                $results[$typeNumber][$subsub['Number']] = $subsub['PropertyDescription'];
            }
        }
    }
}

?>

Dit garandeert mogelijk niet dat alle Number velden Description waarden hebben, tenzij array #2 voor alle Numbers (uit array #1) een Description bevat.
 



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.