Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Probleempje met Arrays

Pagina: 1
Acties:

  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
Hallo,

ik lees inmiddels succesvol gegevens uit van mijn leverancier. Echter krijg ik de waardes uit de array niet goed in afzonderlijke variabelen die ik vandaaruit in html tabellen wil plaatsen...

voor nu is dit mijn code...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
foreach ($productitemsearch->ProductItemSearchResult->productdata as $key => $att)
    {
    if(!is_object($att))
        {
        //echo "$key --- $att<br>"; /*Laat algemene gameinfo zien */
        }
    else
        {
        foreach($att->Shops as $shop)
            {
            $shops[$shop->shop_id] = array('name'=>$shop->shopname, 'logo'=>$shop->shoplogo, 'levertijd'=>$shop->levertijd,'price'=>$shop->price/100,'postage'=>$shop->postage, 'cp_type'=>$shop->cp_type, 'product_url' => $shop->producturl);
            }
        }
    }

    foreach ($shops as $id=>$shop_info)
    {
            //echo "---- Shop ID $id<br>"; /*Laat shopid zien */
                foreach ($shop_info as $key=>$value)
                {
                echo "- $key - $value - <br/>";
                }
    }


Mijn output zet het als volgt op het scherm
- name - Wehkamp.nl -
- logo - http://hwimages.beslist.n.../shop_images/LARGE/19.png -
- levertijd - 3 - 4 werkdagen -
- price - 56.69 -
- postage - 195 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...nAs2VInBD9Gri0ZFLBNhMh48= -
- name - Nedgame.nl -
- logo - http://hwimages.beslist.n.../shop_images/LARGE/37.png -
- levertijd - Op werkdagen voor 16:00 uur besteld, volgende dag in huis -
- price - 59 -
- postage - 195 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...4YGitOLRXRITVce78wuzmpQQ= -
- name - bol.com -
- logo - http://hwimages.beslist.n...s/shop_images/LARGE/1.png -
- levertijd - Op werkdagen voor 23:00 uur besteld, volgende dag in huis -
- price - 64.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...kgAEOSVfzOXd6JUQf2FDMcUg= -
- name - Dixons.nl -
- logo - http://hwimages.beslist.n...hop_images/LARGE/2369.png -
- levertijd - Op werkdagen voor 23:30 uur besteld, volgende dag in huis -
- price - 64.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...5-iBGNftLuYdWXx9kvoSr9M0= -
- name - MyCom.nl -
- logo - http://hwimages.beslist.n...shop_images/LARGE/596.png -
- levertijd - Op werkdagen voor 23:30 uur besteld, volgende dag in huis -
- price - 64.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...0cyBre0uO0Roxr8C4ujdUuNY= -
- name - Intertoys.nl -
- logo - http://hwimages.beslist.n...hop_images/LARGE/5077.png -
- levertijd - 1 - 3 werkdagen -
- price - 67.99 -
- postage - 199 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...H36bM/N0WyJLr9etUCrvEzGU= -
- name - All4games.nl -
- logo - http://hwimages.beslist.n...op_images/LARGE/19560.png -
- levertijd - 2 weken -
- price - 68.4 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...UA1PWPWt0M-xwM4/aIlKYZ10= -
- name - DVDoutlet.nl -
- logo - http://hwimages.beslist.n...shop_images/LARGE/170.png -
- levertijd - 1 werkdag -
- price - 73.79 -
- postage - 99 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...wxBRfCM6W665RQ2XerTvMImo= -
- name - Eci.nl -
- logo - http://hwimages.beslist.n...shop_images/LARGE/171.png -
- levertijd - Op werkdagen voor 15:00 uur besteld, volgende dag in huis -
- price - 78.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...HS8P57ex7hHyHk9q1sRZd5LI= -
- name - Cosmox.nl -
- logo - http://hwimages.beslist.n...hop_images/LARGE/1937.png -
- levertijd - Op werkdagen voor 15:00 uur besteld, volgende dag in huis -
- price - 78.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...m2/lOeaBby3Brz7xHmqmczFM= -
- name - Freerecordshop.nl -
- logo - http://hwimages.beslist.n.../shop_images/LARGE/18.png -
- levertijd - Op werkdagen voor 15:00 uur besteld, volgende dag in huis -
- price - 79.99 -
- postage - 0 -
- cp_type - -
- product_url - http://www.beslist.nl/loa...gRwC0Vejr/dfSv23sHJb9HHE= -
Ik wil de gegevens dus afzonderlijk kunnen filteren en volgens mij kan dat alleen als je ze in aparte variabelen zet. Dat heb ik al op onderstaande wijze geprobeerd maar dan onthoud hij alleen de laatste waarde.

PHP:
1
                extract(array('name'=>$vz->shopname, 'logo'=>$shop->shoplogo, 'levertijd'=>$shop->levertijd,'price'=>$shop->price/100,'postage'=>$shop->postage, 'cp_type'=>$shop->cp_type, 'product_url' => $shop->producturl), EXTR_PREFIX_SAME, "var");


Wie o wie kan mij helpen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Als je die binnenste foreach blijkbaar niet nodig hebt omdat je alle variabelen apart wil aanspreken, waarom gebruik je hem dan? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
NMe schreef op vrijdag 26 juli 2013 @ 12:27:
Als je die binnenste foreach blijkbaar niet nodig hebt omdat je alle variabelen apart wil aanspreken, waarom gebruik je hem dan? :?
Omdat ik alles behalve goed in php ben en dit uit handleidingen en hulp hier en daar in elkaar heb kunnen zetten. Ik ben blij dat ik alles op het scherm krijg zoals ik dat nu heb. En nu will ik dus gaan strippen...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Ok, allereerst loop je twee keer over dezelfde data heen. Nogal onnodig. Je hebt alleen die eerste foreach nodig. Hoe je losse delen van je object aan kan spreken weet je al. Dan is het toch een kleine moeite om vóór je foreach je <table> af te drukken, ná je foreach de </table> en binnen je foreach de <tr> met daarin je data voor die rij? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Zyppora
  • Registratie: December 2005
  • Laatst online: 16-11 23:56

Zyppora

155/50 Warlock

Ik zie "lees [...] gegevens uit van mijn leverancier" en "filteren"; kun je niet in je request al aangeven wat je filters zijn? Zo hoeft er ook niet onnodig gegevens over en weer gestuurd te worden.

Hoe ga je bepalen wat er wel en niet gefilterd moet worden? Mag de gebruiker dit zelf doen adhv knoppen/linkjes of bepaal jij dat achter de schermen?

Voor wat betreft het transleren naar een HTML tabel, zie NMe's post hierboven + in je loop kun je HTML onderdelen (zoals TR en TD tags) outputten ;) Wees een beetje creatief, je hebt ook voor elkaar gekregen dat er een dash voor je data staat en een <br> achter je data. 'Iets met tr's en td's' gaat je ongetwijfeld ook lukken.

Phenom II X4 945 \\ 8GB DDR3 \\ Crosshair IV Formula \\ R9 290


  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
Nou het in html plaatsen gaat me wel lukken. Alleen is het zo dat de array shopinfo uit bepaalde gegevens bestaat zoals de url, de url van het logo van de shop, de kostprijs, de verzendprijs, levertijd enz...

Wat ik wil ik op een deel van mijn pagina een stukje statische info met het plaatje van de winkel, de link en de naam van de winkel en de prijs. Om de overige info die ik niet uit te sluiten en de link van de winkel in een href onder de naam te zetten heb ik uit die shopinfo array toch aparte variabelen nodig?

[ Voor 11% gewijzigd door Kenny_026 op 26-07-2013 14:18 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Nee, waarom? Je kan bij het afdrukken net zo goed gewoon $shop->shop_id gebruiken. Waarom zou dat niet kunnen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
Kijk dat wist ik dus niet. PHP is echt zware stof voor een beginner....

Waar ik nu wel mee zit is als ik dit doe...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
foreach ($productitemsearch->ProductItemSearchResult->productdata as $key => $att)
    {
    if(!is_object($att))
        {
        //echo "$key --- $att<br>"; /*Laat algemene gameinfo zien */
        }
    else
        {
        foreach($att->Shops as $shop)
            {
            $shops[$shop->shop_id] = array('name'=>$shop->shopname, 'logo'=>$shop->shoplogo, 'levertijd'=>$shop->levertijd,'price'=>$shop->price/100,'postage'=>$shop->postage, 'cp_type'=>$shop->cp_type, 'product_url' => $shop->producturl);
            }
        }
    }

    
    foreach ($shops as $id=>$shop_info)
        {
            echo "<table border='1'><tr>";
                foreach ($shop_info as $key=>$value)
                {
                echo "<table border='1'><td width='150'> $shop->shopname </td><td width='500'> $shop->price </td></table>";
                }
            echo "</tr></table>";
            }


Dan laat hij alleen de laastste shop, in dit geval de duurste heel vaak zien. Je gaf al aan dat ik veel onzin erin had staan maar ik zie niet wat...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je zit nou tables in tables af te drukken. En alleen die eerste foreach is nodig, de rest is allemaal rotzooi. Druk nou eens gewoon vóór die foreach de table-tag af, na die eerste foreach de </table> en binnen de foreach de hele TR. Dat is alles wat je hoeft te doen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
Hij doet nu inderdaad precies wat ik wil.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foreach ($productitemsearch->ProductItemSearchResult->productdata as $key => $att)
    {
    if(!is_object($att))
        {
        //echo "$key --- $att<br>"; /*Laat algemene gameinfo zien */
        }
    else
        {
        echo "<table border='1'>";
        foreach($att->Shops as $shop)
            {
            $shops[$shop->shop_id] = array('name'=>$shop->shopname, 'logo'=>$shop->shoplogo, 'levertijd'=>$shop->levertijd,'price'=>$shop->price/100,'postage'=>$shop->postage, 'cp_type'=>$shop->cp_type, 'product_url' => $shop->producturl);
            echo "<tr><td width='150'>$shop->shopname</td><td width='150'>$shop->price</td></tr>";
            }
        echo "</table>";
        }
    }
    
 
?>


Kunnen er nog meer onnodige dingen uit?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Regel 12 doet niks meer tenzij je later alles in een array nodig hebt. En dat kan ik me eigenlijk niet voorstellen, want het staat al in bruikbare vorm. $shops = $productitemsearch->ProductItemSearchResult->productdata; buiten de foreach zetten doet min of meer hetzelfde zonder meer geheugen te vreten. Je moet het dan wel verderop als object gebruiken en niet als array.

offtopic:
Je tabgebruik is nogal apart. Je witruimte voor het inspringen is nogal "all over the place". Lees dit eens door.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
NMe schreef op vrijdag 26 juli 2013 @ 15:31:
Regel 12 doet niks meer tenzij je later alles in een array nodig hebt. En dat kan ik me eigenlijk niet voorstellen, want het staat al in bruikbare vorm. $shops = $productitemsearch->ProductItemSearchResult->productdata; buiten de foreach zetten doet min of meer hetzelfde zonder meer geheugen te vreten. Je moet het dan wel verderop als object gebruiken en niet als array.

offtopic:
Je tabgebruik is nogal apart. Je witruimte voor het inspringen is nogal "all over the place". Lees dit eens door.
Daar gaan we wat mee doen! Thanks voor je hulp!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
NMe schreef op vrijdag 26 juli 2013 @ 15:31:
offtopic:
Je tabgebruik is nogal apart. Je witruimte voor het inspringen is nogal "all over the place". Lees dit eens door.
Hij gebruikt deze: Wikipedia: Indent style#Whitesmiths_style

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Niet consistent, zie de topicstart. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • InZane
  • Registratie: Oktober 2000
  • Nu online
NMe schreef op vrijdag 26 juli 2013 @ 17:06:
[...]

Niet consistent, zie de topicstart. ;)
Bij de 2e geneste foreach doet ie het inderdaad niet. Ik ben trouwens niet zo'n fan van die stijl. Kom dit ook niet vaak tegen, gelukkig.

  • Kenny_026
  • Registratie: Juli 2007
  • Niet online
(overleden)
Probleem is een beetje dat ik geen programmeur ben. Ik heb een jaarje of 15 geleden op school wat pascal en c geleerd en ik zie nu dat het de Allman stijl is.

Ik weet dat het in de code hier her en der verspringt maar dat is omdat ik op het werk de ingebakken code editor van hostgator gebruik. En als ik daar uit copy paste dan klopt het verspringen niet helemaal...
Pagina: 1