Foreach van een array
Ik wil graag alleen de artikelen laten zien die dezelfde ["omschr1"],["omschr2"],["omschr3"] en ["omschr4"] hebben met foreach. Heeft iemand een idee hoe dat moet.
array(43) {
[0]=>
object(stdClass)#53 (9) {
["artnr"]=>
string(10) "196343 "
["groep1"]=>
string(1) "3"
["omschr1"]=>
string(9) "Kunststof"
["groep2"]=>
string(1) "3"
["omschr2"]=>
string(3) "Zak"
["groep3"]=>
string(1) "3"
["omschr3"]=>
string(6) "PP-zak"
["groep4"]=>
string(2) "11"
["omschr4"]=>
string(12) "Blokbodemzak"
}
[1]=>
object(stdClass)#54 (9) {
["artnr"]=>
string(10) "371125 "
["groep1"]=>
string(1) "3"
["omschr1"]=>
string(9) "Kunststof"
["groep2"]=>
string(1) "1"
["omschr2"]=>
string(12) "Folie op rol"
["groep3"]=>
string(1) "9"
["omschr3"]=>
string(8) "PP-folie"
["groep4"]=>
string(0) ""
["omschr4"]=>
string(0) ""
}
[2]=>
object(stdClass)#55 (9) {
["artnr"]=>
string(10) "371126 "
["groep1"]=>
string(1) "3"
["omschr1"]=>
string(9) "Kunststof"
["groep2"]=>
string(1) "1"
["omschr2"]=>
string(12) "Folie op rol"
["groep3"]=>
string(1) "9"
["omschr3"]=>
string(8) "PP-folie"
["groep4"]=>
string(0) ""
["omschr4"]=>
string(0) ""
}
}
Murtada Helo op 17/06/2013 16:46:06:
...artikelen laten zien die dezelfde ... hebben met foreach.
De zelfde ten opzichte van wat?
- Bedoel je dat artikel 3 exact de zelfde omschrijvingen moet hebben als de omscrijvingen van artikel 4?
(bv. voor alle artikelen: "Kunststof", "Folie op rol", "PP-folie", "")
- Of bedoel je dat binnen 1 artikel ["omschr1"] = ["omschr2"] = ["omschr3"] = ["omschr4"] ?
In het eerste geval:
Je moet dan wel 1 artikel als basis nemen en zien of alle andere gelijk zijn.
Anders wordt het wat lastig.
Stel, artikel 19 bevat de zelfde omschrijvingen als artikel 45, 78, 98 en 105. Dan nog moeten we op voorhand weten dat we alles moeten vergelijken aan artikel 19.
In dit geval moet alleen artnr 371125 en 371126 getoond worden
Toevoeging op 17/06/2013 17:02:42:
Ja, De zelfde combinatie van alle 4 omschrijvingen
Een foreach overloopt alle artikels. Eerst 0, dan 1, dan 2, ...
Als je aan artikel 1 bent, is artikel 0 al gepasseerd.
Hoe kan je weten dat alles moet worden vergeleken met artikel 1 (nr. 371125)?
Ik zie nu wel dat artikel 1 en 2 de zelfde omschrijving hebben. Maar als ik eerst naar artikel 0 kijk, kan ik onmogelijk zeggen dat artikel 0 ongeschikt is. Wie weet hebben de laatste vier artikels de zelfde omschrijving als artikel 0; en blijkt dus op het laatste moment dat artikel 1 en 2 niet de omschrijving bevat die we zochten.
---
Je zou eventueel wel een lijst kunnen maken met alle matchen van elk artikel met alle andere artikels, en berekenen welk van de artikels het meeste matches heeft.
Dat betekent wel dat je een foreach in een foreach zou hebben*.
Naarmate het gaat over veel artikels, kan dat veel processing vergen.
Is dit wat je zoekt?
(* of een recursieve functie...)
Gewijzigd op 17/06/2013 17:22:42 door Kris Peeters
Is het dan niet makkelijker om door SQL dingen af te handelen in met php de puntjes op de i te zetten?
Je moet op voorhand weten waarmee je iets vergelijkt. Ik zie niet onmiddellijk een SQL string die kan doen wat hier gevraagd wordt.
Quote:
Dit wordt van een webservice opgehaald
Ik heb het op deze manier aangeroepen.De omschrijvingen heb ik in een array gedaan en dan deze met unieke functie aangeroepen om duplicatie te voorkomen. mijn vraag hoe kan ik dit nu deze unieke omschrijving aanroepen om de bijbehorende artikelen te tonen.
Quote:
Ik heb het op deze manier aangeroepen.De omschrijvingen heb ik in een array gedaan en dan deze met unieke functie aangeroepen om duplicatie te voorkomen. mijn vraag hoe kan ik dit nu deze unieke omschrijving aanroepen om de bijbehorende artikelen te tonen.
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$client = new SoapClient($webservice_connection_string, array('soap_version' => SOAP_1_1) );
$webservice_result = $client->bs_ophalen_artikelgroepen($art,$taal);
var_dump($webservice_result);
$array = array();
foreach ($webservice_result as $k=>$v) {
$array[] = "$v->omschr1"." - "."$v->omschr2"." - "." $v->omschr3". " - "."$v-mschr4";
}
$unique = array_unique($array);
sort($unique);
foreach ($unique as $k=>$v){
echo $k." - ".$v;
echo "<BR>";
}
?>
$client = new SoapClient($webservice_connection_string, array('soap_version' => SOAP_1_1) );
$webservice_result = $client->bs_ophalen_artikelgroepen($art,$taal);
var_dump($webservice_result);
$array = array();
foreach ($webservice_result as $k=>$v) {
$array[] = "$v->omschr1"." - "."$v->omschr2"." - "." $v->omschr3". " - "."$v-mschr4";
}
$unique = array_unique($array);
sort($unique);
foreach ($unique as $k=>$v){
echo $k." - ".$v;
echo "<BR>";
}
?>
Gewijzigd op 18/06/2013 08:22:05 door Murtada Helo