PHP: Zoeken in twee multidimensionale array's
De eerste array bestaat uit: 1 Typenummer [TypeNumber], en een of meer nummers[Number] die daar bij horen.
(zie afbeelding hieronder)
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.
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
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.
Gewijzigd op 02/05/2018 23:01:03 door Rob Doemaarwat
Array #1 zou je als volgt kunnen prepareren:
Code (php)
Maar vervolgens moet je op een nogal omslachtige manier zoeken in array #2 :/.
Dit zal zoiets worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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'];
}
}
}
}
?>
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
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:
Maar vervolgens moet je op een nogal omslachtige manier zoeken in array #2 :/.
Dit zal zoiets worden:
Dit garandeert mogelijk niet dat alle Number velden Description waarden hebben, tenzij array #2 voor alle Numbers (uit array #1) een Description bevat.
Array #1 zou je als volgt kunnen prepareren:
Code (php)
Maar vervolgens moet je op een nogal omslachtige manier zoeken in array #2 :/.
Dit zal zoiets worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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'];
}
}
}
}
?>
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.