/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 skrev:

> Sikkert - men arrays har jeg nu ret godt styr på. Prøv lige at køre de
> tre kodelinjer gennem en PHP-fortolker...

Det ser sådan ud:

   http://temp.lundhansen.dk/

Måske forstår jeg ikke hvad det er du er ude på?

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

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

Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407858
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste