Foreach van een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Murtada Helo

Murtada Helo

17/06/2013 16:46:06
Quote Anchor link
Hallo, Graag uw hulp,
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) ""
}
}
 
PHP hulp

PHP hulp

23/12/2024 19:27:29
 
Kris Peeters

Kris Peeters

17/06/2013 17:00:10
Quote Anchor link
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.
 
Murtada Helo

Murtada Helo

17/06/2013 17:01:05
Quote Anchor link
Ik bedoel alleen artikelnummers laten zien.
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
 
Kris Peeters

Kris Peeters

17/06/2013 17:16:01
Quote Anchor link
Okay, dan moet je eerst wel 1 artikel als basis nemen.

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
 
Reshad F

Reshad F

17/06/2013 17:34:27
Quote Anchor link
Ik neem aan dat dit uit een database komt?

Is het dan niet makkelijker om door SQL dingen af te handelen in met php de puntjes op de i te zetten?
 
Kris Peeters

Kris Peeters

17/06/2013 17:41:42
Quote Anchor link
Waarschijnlijk wel, maar dan zie ik nog steeds het zelfde probleem.
Je moet op voorhand weten waarmee je iets vergelijkt. Ik zie niet onmiddellijk een SQL string die kan doen wat hier gevraagd wordt.
 
Murtada Helo

Murtada Helo

17/06/2013 21:59:03
Quote Anchor link
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:
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
<?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>";
}

?>
Gewijzigd op 18/06/2013 08:22:05 door Murtada Helo
 



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.