login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem bij het maken van een string met variabelen in een array (Opgelost)

Offline Ewergreen - 14/03/2012 18:02
Avatar van EwergreenNieuw lid Hoop dat jullie mij kunnen helpen met een probleem bij het maken van een array. Ik gebruik onderstaande foreach loop om een array te maken. Het is belangrijk dat de array maar één dimensie heeft, aangezien ik bij de laatste iteratie de array moet onderbreken (wat een nachtmerrie is bij multidimensionale arrays).

  1. foreach($loop as $p){
  2. //get the meta and taxonomy data
  3. $name = get_the_term_list($p, "mountains");
  4. $wtr_long = get_post_meta($p,"wtr_longitude",true);
  5. $wtr_lat = get_post_meta($p,"wtr_latitude",true);
  6.  
  7. //Add to Array
  8. $map_array[] = array ('{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name . '"},');
  9. }


Helaas geeft deze array momenteel de volgende output, waar ik niet verder mee kan en ik zie ook mijn fout niet:
  1. Array ( [0] => {latitude: "46.017708", longitude: "8.917122", html: "Grossglockner"}, ) Array ( [0] => {latitude: "46.535573", longitude: "8.464494", html: "Gross Leckihorn"}, ) Array ( [0] => {latitude: "49.196064", longitude: "44.033203", html: ""}, ) Array ( [0] => {latitude: "45.9182", longitude: "7.79809", html: "Allalinhorn"}, )

6 antwoorden

Gesponsorde links
Offline vinTage - 14/03/2012 20:52
Avatar van vinTage Nieuw lid Ik snap je vraag niet helemaal denk ik, maar van wat ik er denk van te snappen:

  1. $index = 0; //aaray index
  2. foreach($loop as $p){
  3. //get the meta and taxonomy data
  4. $name = get_the_term_list($p, "mountains");
  5. $wtr_long = get_post_meta($p,"wtr_longitude",true);
  6. $wtr_lat = get_post_meta($p,"wtr_latitude",true);
  7.  
  8. //Add to Array
  9. $map_array[$index] = array ('{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name . '"},');
  10. $index ++; //index ophogen
  11. }


En dan kun je $map_array[0] tot en met $map_array[count($map_array)] aanroepen.


Maar nogmaals, heen idee of je dit bedoeld..
Offline Ewergreen - 14/03/2012 22:08 (laatste wijziging 14/03/2012 22:12)
Avatar van Ewergreen Nieuw lid Bedankt voor de hulp vinTage. Het probleem is dat de output niet correct is. Ik wil geen nieuwe array, maar een kant en klaar bruikbare strings in dit formaat:
Citaat:
{latitude: "46.017708", longitude: "8.917122", html: "Grossglockner"},


Aangezien de laatste string in dit formaat moet zijn:
Citaat:
{latitude: "45.9182", longitude: "7.79809", html: "Allalinhorn"}],


Wil ik geen multidimensionele arrays gebruiken omdat ik niet weet hoe daar de laatste iteratie te doorbreken. Helaas zelfs met uw code krijg ik nog steeds deze output:
Citaat:
Array ( [0] => {latitude: "46.017708", longitude: "8.917122", html: "Grossglockner"}, )
Array ( [0] => {latitude: "46.535573", longitude: "8.464494", html: "Gross Leckihorn"}, )
Array ( [0] => {latitude: "49.196064", longitude: "44.033203", html: ""}, )
Array ( [0] => {latitude: "45.9182", longitude: "7.79809", html: "Allalinhorn"}, )
Offline vinTage - 14/03/2012 22:33
Avatar van vinTage Nieuw lid Nuja, ik snap je nog niet helemaal geloof ik 

Maar de laatste index kun je toch gewoon opvragen met count($array); ?
Je moet dus alleen een tellertje bijhouden.
Offline Ewergreen - 15/03/2012 00:37 (laatste wijziging 15/03/2012 00:40)
Avatar van Ewergreen Nieuw lid Haha, ik begin me zorgen te maken over mijn communicatieskills na twaalf uur werken. Het probleem is waarschijnlijk zo klein dat je het niet ziet en op een of andere domme manier zie ik de oplossing niet.

Ik gebruik de volgende foreach om de strings te krijgen:
  1. foreach( $map_array as $value){
  2. print_r($value) . "<br />";
  3. } ?>

Het probleem is dus dat ik opnieuw arrays krijg in plaats van strings. Wat zoveel wilt zeggen als dat ik mulidimensionale arrays aanmaak, maar ik zie niet in hoe of waar ik dat doe. In het kort: alles in bold wil ik niet in de output.

Citaat:
Array ( [0] => {latitude: "46.017708", longitude: "8.917122", html: "Grossglockner"}, )

Elke Array geeft ook als key 0 voor god weet welke reden. Ik vermoed dat daar een deel van het probleem zit. En dat is al nadat ik uw $index oplossing had geïntegreerd.
Offline vinTage - 15/03/2012 00:41 (laatste wijziging 15/03/2012 00:56)
Avatar van vinTage Nieuw lid ohw 

Dit is imo je fout, je pleurt er een array 'IN'

$map_array[] = array ('{latitude: "' . $wtr_l... etc



edit: wilde gok:
  1. <?php
  2. $str = '';
  3. foreach($loop as $p){
  4. //get the meta and taxonomy data
  5. $name = get_the_term_list($p, "mountains");
  6. $wtr_long = get_post_meta($p,"wtr_longitude",true);
  7. $wtr_lat = get_post_meta($p,"wtr_latitude",true);
  8.  
  9. //Add to Array
  10. $str .= 'latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name .'~!~';
  11. }
  12.  
  13.  
  14. //nu kan je exploden op ~!~ om een nieuw array te krijgen met je vars erin
  15. ?>


'concreet':
  1. $s = "1~!~ 2~!~ 3~!~";
  2.  
  3. $ar = explode('~!~', $s);
  4.  
  5. foreach($ar as $bla)
  6. {
  7. echo $bla.'<br>';
  8. }


Bedankt door: Ewergreen
Offline Ewergreen - 15/03/2012 11:53 (laatste wijziging 15/03/2012 11:53)
Avatar van Ewergreen Nieuw lid Bedankt vinTage. Mits een paar kleine aanpassingen werkt het nu quasi perfect. Ook een belangrijke les geleerd over arrays, wat blijkbaar een moeilijk punt blijft.

Even voor de volledigheid, en misschien kan iemand anders er later nog iets van leren, hieronder de afgewerkte code.
  1. //Add to Array
  2. $map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name .'"},~!~';
  3. //$map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "name"},~!~';
  4. }
  5.  
  6. //Remove last three "~!~" characters from the string not to have one too many arrays when exploding
  7. $clean_map_string = substr($map_string, 0, -3);
  8.  
  9. //nu kan je exploden op ~!~ om een nieuw array te krijgen met je vars erin
  10. $map_array = explode('~!~', $clean_map_string);
  11. $i = 0;
  12. $length = count($map_array)-1;
  13.  
  14. //Inserts all the markers
  15. foreach($map_array as $value){
  16. if( $i != $length ){
  17. echo $value;
  18. }
  19. else {
  20. echo str_replace("},", "}],", $value);
  21. }
  22. $i++;
  23. }
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2019 Sitemasters.be - Regels - Laadtijd: 0.32s