| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Tilføje til multiarray, eller udpakke Fra : Kim Ludvigsen | 
  Dato :  07-03-11 14:14 |  
  |  
 
            Min opgave kort, beskrevet:
 Hente strenge i sæt af fem fra fil
 Finde nye strenge
 Tilføje de nye strenge
 Sortere i datoorden
 Begrænse til ti nyeste
 Gemme strenge i fil i sæt af fem
 Jeg har forsøgt at løse det med arrays til hvert sæt 
 strenge, hvor jeg så gemmer de fem arrays i et multiarray, 
 altså:
 $array = array($arr1, $arr2, $arr3, $arr4, $arr5)
 Jeg gemmer/henter så i filen ved hjælp af 
 serialize/unserialize. Dette for at undgå at skulle 
 hente/gemme i fem filer med hvert sit array.
 Jeg finder de nye strenge, men jeg kan ikke finde ud af at 
 få dem ind i multiarrayet. I et almindeligt array, kan man 
 tilføje med:
 $arr1[] = $string;
 Hvordan gør man med et multiarray? Jeg har prøvet med 
 $array[1][] = $string men det virker ikke.
 Og hvordan sorterer og begrænser jeg antallet i multiarrayet?
 Er det nemmest at pakke multiarrayet ud? I så fald, hvordan 
 gør jeg det? Hvis arrayet er pakket ud, kan jeg sagtens selv 
 finde ud af resten.
 Eller er det bedre at gemme i fem enkelte filer med hvert 
 sit array, selvom det kræver flere filoperationer?
 Hvis der er forslag til bedre løsninger, er de mere end 
 velkomne.
 -- 
 Mvh. Kim Ludvigsen
 Hjælp til computeren og internettet:
 http://kimludvigsen.dk
            
             |   |   
            
        
 
            
         
           Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 14:31 |  
  |  
 
            Kim Ludvigsen skrev:
 > Jeg finder de nye strenge, men jeg kan ikke finde ud af at
 > få dem ind i multiarrayet. I et almindeligt array, kan man
 > tilføje med:
 > $arr1[] = $string;
 > Hvordan gør man med et multiarray? Jeg har prøvet med
 > $array[1][] = $string men det virker ikke.
 Typisk, fem minutter efter at have skrevet, fandt jeg vist 
 selv løsningen ved prøve mig frem. Det ser ud til, at:
 $array['arr1[]'] = $string;
 virker. I hvert fald får jeg ikke en fejlmeddelelse.
 > Og hvordan sorterer og begrænser jeg antallet i multiarrayet?
 Jeg er lige ved at tro, jeg så også kan finde ud af at få 
 sorteringen til at virke, så nu mangler jeg vist bare 
 begrænsningen til 10. Nogle bud?
 -- 
 Mvh. Kim Ludvigsen
 Omfattende brugerguide for begyndere om ubuntu Linux:
 http://kimludvigsen.dk/linux
            
             |   |   
            
        
 
            
         
           Bertel Lund Hansen (07-03-2011) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  07-03-11 15:15 |  
  |  
 
            Kim Ludvigsen skrev:
 > Er det nemmest at pakke multiarrayet ud? I så fald, hvordan 
 > gør jeg det? Hvis arrayet er pakket ud, kan jeg sagtens selv 
 > finde ud af resten.
 list($array1,$array2,$array3,$array4,$array5)=$multiarray;
 Det er et hurtigt, konkret svar. Jeg vil overveje selve problemet
 og svare senere (har set at du er kommet videre).
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
           Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 15:43 |  
  |  
 
            Bertel Lund Hansen skrev:
 > Kim Ludvigsen skrev:
 >
 >> Er det nemmest at pakke multiarrayet ud? I så fald, hvordan
 >> gør jeg det? Hvis arrayet er pakket ud, kan jeg sagtens selv
 >> finde ud af resten.
 >
 > list($array1,$array2,$array3,$array4,$array5)=$multiarray;
 Ak, jeg har søgt og søgt i flere timer med ord som unpack 
 explode extract, og hvad jeg ellers kunne finde på. Og jeg 
 stødte på voldsomt indviklede funktioner, som jeg ikke kunne 
 hitte hovede og hale på. Og så er det så simpelt.
 Den løsning, jeg fandt til at tilføje i multiarrayet er ikke 
 korrekt, dels skal det ikke være:
 $array['arr1[]'] = $string;
 men
 $array['arr1'] = $string;
 og dels virker det vist ikke med at tilføje, det ser ud som 
 om, der bliver overskrevet.
 Men det er også altsammen ligegyldigt. Efter udpakningen tog 
 det to minutter at få det til at virke med tilføjelse, 
 sortering, beskæring, gemning i ny fil osv. Tak!
 -- 
 Mvh. Kim Ludvigsen
 Gør din hjemmeside mere intelligent, begynderguide om PHP:
 http://kimludvigsen.dk/programmer-internet-kompozer-trin-php.php
            
             |   |   
            
        
 
            
         
            Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 15:46 |  
  |  
 
            Kim Ludvigsen skrev:
 > Efter udpakningen tog
 > det to minutter at få det til at virke med tilføjelse,
 > sortering, beskæring, gemning i ny fil osv. Tak!
 Måske der er en nemmere metode til at begrænse antallet af 
 strenge i et array? I øjeblikket bruger jeg en for løkke fra 
 1 til 10 på hvert array.
 -- 
 Mvh. Kim Ludvigsen
 Undgå virus og andet snavs på computeren:
 http://pc-sikkerhed.dk
            
             |   |   
            
        
 
            
         
             Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 17:28 |  
  |  
 
            Kim Ludvigsen skrev:
 > Måske der er en nemmere metode til at begrænse antallet af
 > strenge i et array? I øjeblikket bruger jeg en for løkke fra
 > 1 til 10 på hvert array.
 Det er der, den hedder array_slice:
 $arr=array_slice($arr, 0, 10)
 hvor 10 angiver det ønskede antal af strenge.
 -- 
 Mvh. Kim Ludvigsen
 Standardoverholdende multimedia på hjemmesiden:
 http://kimludvigsen.dk/tips-internet-websnedker-multimedia.php
            
             |   |   
            
        
 
            
         
            Bertel Lund Hansen (07-03-2011) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  07-03-11 17:44 |  
  |  
 
            Kim Ludvigsen skrev:
 >> list($array1,$array2,$array3,$array4,$array5)=$multiarray;
 > Ak, jeg har søgt og søgt i flere timer med ord som unpack 
 > explode extract, og hvad jeg ellers kunne finde på.
 Lidt baggrundsinfo:
 list() er speciel for PHP. Det er en slags pseudokommando.
 Python har noget der ligner. Der skriver man bare:
      array1,array2,array3,array4,array5=multiarray
     
 Men helt generelt for alle sprog kan man gøre sådan (om ikke
 andet):
      $array1=$multiarray[0];
      $array2=$multiarray[1];
      $array3=$multiarray[2];
      $array4=$multiarray[3];
      $array5=$multiarray[4];
 Hvordan det skrives, er selvfølgelig sprogafhængigt, men
 princippet er helt generelt. Det er definitionen på et array at
 man kan udtrække elmenter ved hjælp af deres nummer.
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
           Jonathan Stein (07-03-2011) 
         
	
            | Kommentar Fra : Jonathan Stein | 
  Dato :  07-03-11 16:09 |  
  |   
            Den 07-03-2011 14:14, Kim Ludvigsen skrev:
 
 > ... Jeg har prøvet med $array[1][] = $string men det virker ikke.
 
 Det kommer nok an på hvad, man forventer?
 
 Første element har indeks nul, så du kan f.eks. prøve
    $array[1][] = 'Test';
    echo $array[1][0];
 
 Det skulle meget gerne skrive: Test
 
    M.v.h.
 
      Jonathan
  
            
             |   |   
            
        
 
            
         
           Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 17:25 |  
  |  
 
            Jonathan Stein skrev:
 > Den 07-03-2011 14:14, Kim Ludvigsen skrev:
 >
 >> ... Jeg har prøvet med $array[1][] = $string men det
 >> virker ikke.
 >
 > Det kommer nok an på hvad, man forventer?
 Nej, jeg fik en fejlmeddelelse. Men jeg kan ikke udelukke, 
 at det er noget andet kode, der har drillet. Jeg kan ikke 
 efterprøve, fordi jeg endte med at pakke arrayerne ud fra 
 multiarrayet, og jeg ikke længere har den gamle kode.
 -- 
 Mvh. Kim Ludvigsen
 Tips til hjemmesidesnedkeren:
 http://kimludvigsen.dk/tips-internet-websnedker-multimedia.php
            
             |   |   
            
        
 
            
         
            Jonathan Stein (07-03-2011) 
         
	
            | Kommentar Fra : Jonathan Stein | 
  Dato :  07-03-11 19:42 |  
  |   
            Den 07-03-2011 17:25, Kim Ludvigsen skrev:
 
 >>> ... Jeg har prøvet med $array[1][] = $string men det
 >>> virker ikke.
 >>
 >> Det kommer nok an på hvad, man forventer?
 >
 > Nej, jeg fik en fejlmeddelelse. Men jeg kan ikke udelukke, at det er
 > noget andet kode, der har drillet.
 
 Der må have været noget andet galt.
 
 Jeg ved ikke, om $string var en enkelt streng eller et array.
 Med et array ville du kunne gøre sådan her:
    $string = array('Streng1', 'Streng2');
    $array[1][] = $string;
    echo $array[1][0][0]; // Udskriver: Streng1
 
    M.v.h.
 
      Jonathan
  
            
             |   |   
            
        
 
            
         
             Kim Ludvigsen (07-03-2011) 
         
	
            | Kommentar Fra : Kim Ludvigsen | 
  Dato :  07-03-11 20:54 |  
  |  
 
            Jonathan Stein skrev:
 > Den 07-03-2011 17:25, Kim Ludvigsen skrev:
 >
 >>>> ... Jeg har prøvet med $array[1][] = $string men det
 >>>> virker ikke.
 > Der må have været noget andet galt.
 >
 > Jeg ved ikke, om $string var en enkelt streng eller et array.
 En enkelt streng.
 > Med et array ville du kunne gøre sådan her:
 > $string = array('Streng1', 'Streng2');
 > $array[1][] = $string;
 > echo $array[1][0][0]; // Udskriver: Streng1
 Det var det første, jeg prøvede, inden jeg spurgte her, men 
 det virkede som sagt ikke. Jeg kunne sagtens hente en streng 
 fra multiarrayet med echo som ovenfor, men det gav en fejl, 
 når jeg prøvede at indsætte. Men som du skriver, har der nok 
 været noget andet galt.
 Men som sagt, problemet er løst ad anden vej, så det er ikke 
 relevant mere for mit vedkommende. Og nu ved andre, der 
 læser med, at det skal kunne gøres på den måde.
 -- 
 Mvh. Kim Ludvigsen
 Omfattende brugerguide for begyndere om ubuntu Linux:
 http://kimludvigsen.dk/linux
            
             |   |   
            
        
 
            
         
             Bertel Lund Hansen (07-03-2011) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  07-03-11 21:46 |  
  |  
 
            Jonathan Stein skrev:
 > Jeg ved ikke, om $string var en enkelt streng eller et array.
 > Med et array ville du kunne gøre sådan her:
 >    $string = array('Streng1', 'Streng2');
 >    $array[1][] = $string;
 >    echo $array[1][0][0]; // Udskriver: Streng1
 Der er vist noget du har misforstået. Når man bruger en tom [],
 bliver der tilføjet et element til arrayet. Hvis det er tomt i
 forvejen, bliver det element nummer 0, men hvis der var 4
 elementer i forvejen, bliver det nummer 4.
      $arr=array('1','2','5');
      $arr[]='Test';
      echo $arr[0]
      // Udskrift: 1
 -- 
 Bertel
 http://bertel.lundhansen.dk/      http://fiduso.dk/
            
             |   |   
            
        
 
            
         
              Jonathan Stein (07-03-2011) 
         
	
            | Kommentar Fra : Jonathan Stein | 
  Dato :  07-03-11 23:15 |  
  |   
            Den 07-03-2011 21:46, Bertel Lund Hansen skrev:
 
 >> Jeg ved ikke, om $string var en enkelt streng eller et array.
 >> Med et array ville du kunne gøre sådan her:
 >>     $string = array('Streng1', 'Streng2');
 >>     $array[1][] = $string;
 >>     echo $array[1][0][0]; // Udskriver: Streng1
 >
 > Der er vist noget du har misforstået.
 
 Sikkert - men arrays har jeg nu ret godt styr på. Prøv lige at køre de 
 tre kodelinjer gennem en PHP-fortolker...
 
    M.v.h.
 
      Jonathan
  
            
             |   |   
            
        
 
            
         
               Bertel Lund Hansen (08-03-2011) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  08-03-11 08:19 |  
  |   |   |   
            
        
 
            
         
                Jonathan Stein (08-03-2011) 
         
	
            | Kommentar Fra : Jonathan Stein | 
  Dato :  08-03-11 11:36 |  
  |   
            Den 08-03-2011 08:18, Bertel Lund Hansen skrev:
 
 > Måske forstår jeg ikke hvad det er du er ude på?
 
 Kim skrev, at $array[1][] = $string "ikke virker", så jeg ville egentlig 
 bare vise, at konstruktionen virker fint - men at den jo nok gør noget 
 andet, end Kim forventede.
 
    M.v.h.
 
      Jonathan
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |