login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array probleem (Opgelost)

Offline xent0r - 01/09/2010 20:40
Avatar van xent0rNieuw lid Hallo ik ben bezig met een simpele control paneel voor openvz

ik execute het volgende:
exec("$vzlist -a -H|awk '{print $1}{print $5}{print $4}{print $3}'", $output, $return);


maar dan krijg ik een array terug nou is dit niet erg alleen wil ik er losse arrays van maken zodat ik de informatie makkelijk kan weergeven op de pagina.

dit is de array die ik terug krijg:

array(8) { [0]=> string(3) "101" [1]=> string(18) "tester.domein.nl" [2]=> string(11) "172.19.3.71" [3]=> string(7) "running" [4]=> string(3) "102" [5]=> string(19) "tester2.domein.nl" [6]=> string(11) "172.19.3.72" [7]=> string(7) "stopped" }


en dat zou eigenlijk zou moeten worden:

array ( "101" => array ( "vpsid" => "101",
"hostname" => "tester.domein.nl",
"ip" => "172.19.3.71",
"hostname" => "tester.domein.nl"),
"status" => "running")

"102" => array ( "vpsid" => "102",
"hostname" => "tester2.domein.nl",
"ip" => "172.19.3.72",
"hostname" => "tester2.domein.nl"),
"status" => "stopped");

ik ben er al heel de dag mee bezig heeft iemand een idee of een goeie tip hoe ik dit kan oplossen.

Alvast bedankt




4 antwoorden

Gesponsorde links
Offline Koen - 01/09/2010 21:09
Avatar van Koen PHP expert PHP.net: foreach -> kijken of het huidige element van de array een getal is (101, 102, ...). Zo ja -> nieuwe array aanmaken en het ID tijdelijk opslaan in een variabele. Zo nee -> kijken wat het element dan wel is (ik neem aan dat je zelf weet hoe je onderscheid kan maken tussen een domein, ip en een simpele tekenreeks. ofwel doe je dat ofwel hou je gewoon een tellertje bij (staat het op 1 dan zit je aan de hostname, 2 het ip en 3 de status)).

Succes ;)
Offline xent0r - 02/09/2010 00:14
Avatar van xent0r Nieuw lid ja heb ik ook aan zitten denken alleen de vpsid kan veranderen ligt er aan hoe welke id je de vps geeft bij het aanmaken.
Offline Maarten - 02/09/2010 08:54 (laatste wijziging 02/09/2010 08:55)
Avatar van Maarten Erelid Je weet toch in welke key van je array het Id altijd zal zitten? [0], [4], [8] enzovoort. Je kan dus gewoon je array, die altijd dezelfde vorm heeft ongeacht de waarden, hervormen naar de vorm die jij wilt...

Ter verduidelijking:
Je weet dat iedere vps op zich 4 array-waardes heeft, dus je begint met het aantal elementen in de array te delen door 4 - zo weet je al hoeveel VPS'en er zijn.

En dan doe je zoiets:
  1. for($i = 0; i $ < $AANTALVPS; $i++) {
  2. // Voor de eerste VPS wil je keys 0, 1, 2 en 3
  3. // Voor de tweede VPS wil je keys 4, 5, 6 en 7
  4. // Voor de derde VPS wil je keys 8, 9, 10 en 11
  5. $eersteKey = $i * 4; // Is dus eerst 0, dan 4, dan 8
  6. $tweedeKey = $eersteKey + 1; // Is dus eerst 1, dan 5, dan 9
  7. $derdeKey = $eersteKey + 2; // enzovoort
  8. $vierdeKey = $eersteKey + 3;
  9. }
Offline xent0r - 02/09/2010 13:36
Avatar van xent0r Nieuw lid Bedankt voor jullie hulp jongens heb het nu zo:

  1. $count = count($output);
  2.  
  3. $aantalvps = $count / 4;
  4.  
  5. echo "Er zijn: ".$aantalvps." VPS Server(s)<br>";
  6. for ($i = 0; $i < $aantalvps; $i++) {
  7.  
  8.  
  9. $eersteKey = $i * 4;
  10. $tweedeKey = $eersteKey + 1;
  11. $derdeKey = $eersteKey + 2;
  12. $vierdeKey = $eersteKey + 3;
  13.  
  14.  
  15. $lijst[$i] = array("vpsid" => $output[$eersteKey], "hostname" => $output[$tweedeKey], "ip" => $output[$derdeKey], "status" => $output[$vierdeKey]);
  16.  
  17. echo $lijst[$i][vpsid]." ";
  18. echo $lijst[$i][hostname]." ";
  19. echo $lijst[$i][ip]." ";
  20. echo $lijst[$i][status]."<BR>";
  21. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s