/ 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
Problem med Array
Fra : Kurt G


Dato : 12-11-10 11:36

Hej.
Jeg har lidt problemer med Array.
Jeg bruger følgende:
Do //Lav array med linierne uden kommentarer
{
$streng = fgets($fil);
if (substr($streng,0,2) !="//") //Det er ikke en kommentar
{
$felter[] = ($streng);
}
}
while ($streng !="");

Og derefter:
For ($loop=0; $loop < count($felter); $loop++)
{
$MoedeArray[] = explode("|",$felter[$loop]);
$aar = $MoedeArray[1];
$maaned = $MoedeArray[4];
$dag = $MoedeArray[3];
}

Hvorfor får jeg en advarsel:
Notice: Undefined offset: 1 in funktioner.php on line 172
Notice: Undefined offset: 4 in funktioner.php on line 173
Notice: Undefined offset: 3 in funktioner.php on line 174

Jeg har prøvet at indsætte:
$felter[$loop] = "1|2010|Mandag|3|5|19-21||";
før
$MoedeArray[] = explode("|",$felter[$loop]);
uden at det hjalp.

Mvh Kurt




 
 
Martin (12-11-2010)
Kommentar
Fra : Martin


Dato : 12-11-10 12:13

On 12-11-2010 11:35, Kurt G wrote:
> Hej.
> Jeg har lidt problemer med Array.
> Jeg bruger følgende:
> Do //Lav array med linierne uden kommentarer
> {
> $streng = fgets($fil);
> if (substr($streng,0,2) !="//") //Det er ikke en kommentar
> {
> $felter[] = ($streng);
> }
> }
> while ($streng !="");
>
> Og derefter:
> For ($loop=0; $loop< count($felter); $loop++)
> {
> $MoedeArray[] = explode("|",$felter[$loop]);

// Fordi du smier et array ind i et array
// Faktisk får du følgende
$aar = $MoedeArray[0][1];

// Det smarteste det ville være
// 1|2010|Mandag|3|5|19-21||
list($day, $year, $dayinletter, ....) = explode('|', $felter[$loop]);

// Eller hvis du gerne vil have det på din måde
$MoedeArray = explode('|', $felter[$loop]);

// Så kan du bare skrive
echo $day;

// PS hvis du ikke helt har styr på hvordan dit array ser ud, så er
// var_dump() lige en funktion for dig :)

echo '<pre>';
var_dump($MoedeArray);


> $aar = $MoedeArray[1];
> $maaned = $MoedeArray[4];
> $dag = $MoedeArray[3];
> }
>
> Hvorfor får jeg en advarsel:
> Notice: Undefined offset: 1 in funktioner.php on line 172
> Notice: Undefined offset: 4 in funktioner.php on line 173
> Notice: Undefined offset: 3 in funktioner.php on line 174

Det er ikke advarsler, det er notitser - om at indexset 1 ikke findes i
linje 172

>
> Jeg har prøvet at indsætte:
> $felter[$loop] = "1|2010|Mandag|3|5|19-21||";
> før
> $MoedeArray[] = explode("|",$felter[$loop]);
> uden at det hjalp.

Igen - du smider et array ind i et array - så du laver et nested array

var_dump($MoedeArray);
ville have fortalt at dit array ser således ud

Array 0
Array 1
0 => 1
1 => 2010
2 => Mandag
3 => 3
4 => 5
5 => 19-21
6 => ''
7 => ''

Altså et array inde i et andet array

Kurt G (12-11-2010)
Kommentar
Fra : Kurt G


Dato : 12-11-10 12:55

Hej Martin.
Tak for sit svar, jeg vil studere det grundigt!

Mvh Kurt

"Martin" <maa@scandesigns.invalid> skrev i en meddelelse
news:4cdd2125$0$23761$14726298@news.sunsite.dk...
> On 12-11-2010 11:35, Kurt G wrote:
>> Hej.
>> Jeg har lidt problemer med Array.
>> Jeg bruger følgende:
>> Do //Lav array med linierne uden kommentarer
>> {
>> $streng = fgets($fil);
>> if (substr($streng,0,2) !="//") //Det er ikke en kommentar
>> {
>> $felter[] = ($streng);
>> }
>> }
>> while ($streng !="");
>>
>> Og derefter:
>> For ($loop=0; $loop< count($felter); $loop++)
>> {
>> $MoedeArray[] = explode("|",$felter[$loop]);
>
> // Fordi du smier et array ind i et array
> // Faktisk får du følgende
> $aar = $MoedeArray[0][1];
>
> // Det smarteste det ville være
> // 1|2010|Mandag|3|5|19-21||
> list($day, $year, $dayinletter, ....) = explode('|', $felter[$loop]);
>
> // Eller hvis du gerne vil have det på din måde
> $MoedeArray = explode('|', $felter[$loop]);
>
> // Så kan du bare skrive
> echo $day;
>
> // PS hvis du ikke helt har styr på hvordan dit array ser ud, så er
> // var_dump() lige en funktion for dig :)
>
> echo '<pre>';
> var_dump($MoedeArray);
>
>
>> $aar = $MoedeArray[1];
>> $maaned = $MoedeArray[4];
>> $dag = $MoedeArray[3];
>> }
>>
>> Hvorfor får jeg en advarsel:
>> Notice: Undefined offset: 1 in funktioner.php on line 172
>> Notice: Undefined offset: 4 in funktioner.php on line 173
>> Notice: Undefined offset: 3 in funktioner.php on line 174
>
> Det er ikke advarsler, det er notitser - om at indexset 1 ikke findes i
> linje 172
>
>>
>> Jeg har prøvet at indsætte:
>> $felter[$loop] = "1|2010|Mandag|3|5|19-21||";
>> før
>> $MoedeArray[] = explode("|",$felter[$loop]);
>> uden at det hjalp.
>
> Igen - du smider et array ind i et array - så du laver et nested array
>
> var_dump($MoedeArray);
> ville have fortalt at dit array ser således ud
>
> Array 0
> Array 1
> 0 => 1
> 1 => 2010
> 2 => Mandag
> 3 => 3
> 4 => 5
> 5 => 19-21
> 6 => ''
> 7 => ''
>
> Altså et array inde i et andet array



Bertel Lund Hansen (12-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 12-11-10 14:57

Kurt G skrev:

> Jeg har lidt problemer med Array.
> Jeg bruger følgende:

> Hvorfor får jeg en advarsel:

Fordi du har haft en tom linje i filen. Så er kun $MoedeArray[0] sat
(til den tomme streng).

Prøv følgende:
$fields = array();
for each (file($fil) as $line)
   if ($line) $fields[] = $line;

foreach ($fields as $fieldline)
   list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);

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

Martin (12-11-2010)
Kommentar
Fra : Martin


Dato : 12-11-10 15:49

On 12-11-2010 14:56, Bertel Lund Hansen wrote:
> Kurt G skrev:
>
>> Jeg har lidt problemer med Array.
>> Jeg bruger følgende:
>
>> Hvorfor får jeg en advarsel:
>
> Fordi du har haft en tom linje i filen. Så er kun $MoedeArray[0] sat
> (til den tomme streng).
>
> Prøv følgende:
> $fields = array();
> for each (file($fil) as $line)
>    if ($line) $fields[] = $line;
>
> foreach ($fields as $fieldline)
>    list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
>

Ingen grund til at hive det samme rundt 2 gange - det tager jo dobbelt
så langtid..

foreach (file($fil) AS $line)
if (!$line) continue;
// continue springer alt over og løber næste $line igennem
list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);

Bertel Lund Hansen (12-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 12-11-10 15:56

Martin skrev:

> Ingen grund til at hive det samme rundt 2 gange - det tager jo dobbelt
> så langtid..

Ja. Jeg ved ikke om arrayet skal bruges igen.

> if (!$line) continue;

Jeg vil fraråde brugen af continue. Den kan være meget forvirrende.
Jeg ville bruge en simpel if:

foreach (file($fil) AS $line)
if ($line)
list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);

Men som sagt kommer det an på resten af programmet.

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

Martin (15-11-2010)
Kommentar
Fra : Martin


Dato : 15-11-10 14:41

On 12-11-2010 15:55, Bertel Lund Hansen wrote:
> Martin skrev:
>
>> Ingen grund til at hive det samme rundt 2 gange - det tager jo dobbelt
>> så langtid..
>
> Ja. Jeg ved ikke om arrayet skal bruges igen.
>
>> if (!$line) continue;
>
> Jeg vil fraråde brugen af continue. Den kan være meget forvirrende.

Det er jeg helt enig i...
Dog bliver continue brugt på samme måde i andre sprog

MEN det ser pænere ud end

if (do) {
... 100 linjers kode
}

Så hellere

if (! do) continue;
.... 100 linjers kode

Så slipper man også for alle de {} - der ligger langt fra hinanden.


> Jeg ville bruge en simpel if:
>
> foreach (file($fil) AS $line)
> if ($line)
> list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
>
> Men som sagt kommer det an på resten af programmet.
>


Birger Sørensen (15-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 15-11-10 15:11

Martin formulerede mandag:
> On 12-11-2010 15:55, Bertel Lund Hansen wrote:
>> Martin skrev:
>>
>>> Ingen grund til at hive det samme rundt 2 gange - det tager jo dobbelt
>>> så langtid..
>>
>> Ja. Jeg ved ikke om arrayet skal bruges igen.
>>
>>> if (!$line) continue;
>>
>> Jeg vil fraråde brugen af continue. Den kan være meget forvirrende.
>
> Det er jeg helt enig i...
> Dog bliver continue brugt på samme måde i andre sprog
>
> MEN det ser pænere ud end
>
> if (do) {
> ... 100 linjers kode
> }
>
> Så hellere
>
> if (! do) continue;
> ... 100 linjers kode
>
> Så slipper man også for alle de {} - der ligger langt fra hinanden.
>
>
>> Jeg ville bruge en simpel if:
>>
>> foreach (file($fil) AS $line)
>> if ($line)
>> list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
>>
>> Men som sagt kommer det an på resten af programmet.
>>

Hvis du ikke kan holde styr på {}, så brug indrykning til expressions.
Det hjælper.

Og ellers smid dine 100 linier i en funktion

if (do) Func100linier();

Så er det også læsbart for andre end dig selv.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Bertel Lund Hansen (16-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-11-10 08:00

Martin skrev:

> MEN det ser pænere ud end

Nej.

> Så hellere

> if (! do) continue;
> ... 100 linjers kode

> Så slipper man også for alle de {} - der ligger langt fra hinanden.

Hvordan det? De 100 linjer skal indesluttes af {} under alle
omstændigheder.

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

Kurt G (17-11-2010)
Kommentar
Fra : Kurt G


Dato : 17-11-10 09:37

"Bertel Lund Hansen" <splitteminebramsejl@lundhansen.dk> skrev i en
meddelelse news:ura4e6l30f43tn0oqk9qbrm0nk9rbmdfui@news.dotsrc.org...
> Martin skrev:
>
>> MEN det ser pænere ud end
>
> Nej.
>
>> Så hellere
>
>> if (! do) continue;
>> ... 100 linjers kode
>
>> Så slipper man også for alle de {} - der ligger langt fra hinanden.
>
> Hvordan det? De 100 linjer skal indesluttes af {} under alle
> omstændigheder.
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/

Min ringe erfaring er, at det er klogt med alle {} samt indrykning.
Jeg kan ikke holde styr på det uden indrykningernen.
Tak for al hjælp.

Mvh Kurt



Bertel Lund Hansen (17-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-11-10 09:55

Kurt G skrev:

> Min ringe erfaring er, at det er klogt med alle {} samt indrykning.
> Jeg kan ikke holde styr på det uden indrykningernen.

Det kan jeg heller ikke. Men jeg skipper krølleparenteserne hvor
de kan undværes. Det er dog ikke noget jeg specielt vil anbefale;
det er bare en vane.

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

Birger Sørensen (17-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 17-11-10 11:27

Efter mange tanker skrev Bertel Lund Hansen:
> Kurt G skrev:
>
>> Min ringe erfaring er, at det er klogt med alle {} samt indrykning.
>> Jeg kan ikke holde styr på det uden indrykningernen.
>
> Det kan jeg heller ikke. Men jeg skipper krølleparenteserne hvor
> de kan undværes. Det er dog ikke noget jeg specielt vil anbefale;
> det er bare en vane.

Jeg har så gjort det omvendte til en vane - altid at tage en tuborg {},
når der er mulighed for det.
Det fylder lidt mere, men er for mig mere overskueligt, og det gør det
enklere lige at tilføje en linie..
Jeg har selvfølgelig også altid indrykningen med.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Bertel Lund Hansen (18-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 18-11-10 17:03

Birger Sørensen skrev:

> Jeg har så gjort det omvendte til en vane - altid at tage en tuborg {},
> når der er mulighed for det.

Virkelig? Dine filer må være uendeligt store.

<?
{{{{{{{{{{{{{{{{{{{{{{{$number=100;}}}}}}}}}}}}}}}}}}}}}}}
osv.
?>

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

Birger Sørensen (18-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 18-11-10 18:05

Følgende er skrevet af Bertel Lund Hansen:
> Birger Sørensen skrev:
>
>> Jeg har så gjort det omvendte til en vane - altid at tage en tuborg {},
>> når der er mulighed for det.
>
> Virkelig? Dine filer må være uendeligt store.
>
> <?
> {{{{{{{{{{{{{{{{{{{{{{{$number=100;}}}}}}}}}}}}}}}}}}}}}}}
> osv.
> ?>

^^
Jeg jo ikke nogen drukmås - så jeg nøjes med en enkelt hvor det er
nødvendigt.
Men springer så heller ikke over, bare fordi man kan!

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kurt G (12-11-2010)
Kommentar
Fra : Kurt G


Dato : 12-11-10 17:06

"Bertel Lund Hansen" <splitteminebramsejl@lundhansen.dk> skrev i en
meddelelse news:kghqd6tophdo360alisms88qkqor6i5d0v@news.dotsrc.org...
> Kurt G skrev:
>
>> Jeg har lidt problemer med Array.
>> Jeg bruger følgende:
>
>> Hvorfor får jeg en advarsel:
>
> Fordi du har haft en tom linje i filen. Så er kun $MoedeArray[0] sat
> (til den tomme streng).

Det forstår jeg ikke rigtigt. Godt nok stopper loopen på en tom linie, men
det ødelægger/resetter vel ikke array-et?

Der er nogle 'frække ord' herunder, som jeg ikke kender, men jeg slog
file($fil) op og det ser ud til, at den kan det, som det hele går ud på for
mig.
Men jeg kan ikke lige gennemskue de næste linier. Og der kommer kun blank
skærm ud af at prøve det (det går tilsyneledende i stå).
Kan jeg få lidt kommentarer?

> Prøv følgende:
> $fields = array();
> for each (file($fil) as $line)
> if ($line) $fields[] = $line;
>
> foreach ($fields as $fieldline)
> list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Der er nogle 'frække ord', som jeg ikke kendte, men jeg slog file($fil) op
og det ser ud til, at den kan det, som det hele går ud på for mig.

Mvh Kurt



Bertel Lund Hansen (13-11-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 13-11-10 09:20

Kurt G skrev:

> Kan jeg få lidt kommentarer?

> > Prøv følgende:
> > $fields = array();
> > for each (file($fil) as $line)
> > if ($line) $fields[] = $line;

file() læser indholdet af en fil og returnerer et array med linjerne.

> > foreach ($fields as $fieldline)

foreach gennemløber et array og henter en kopi af elementerne en ad gangen.
Den får det navn i løkken man selv giver den i parentesen. Bemærk at det
originale array er upåvirket af hvad man gør med kopien. Det kan være drilagtigt.

> > list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);

list() med variabelnavne er en måde at tildele flere variable elementerne
fra et array på én gang.

> Og der kommer kun blank skærm ud af at prøve det (det går tilsyneledende i stå).

Det er fordi der ikke laves noget i løkken. Der tildeles værdier til nogle variable
og så går løkken videre og tildeleder nye værdier til de samme variable osv.

Arbejdet skal gøres her:

foreach ($fields as $fieldline) {
list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
lav noget med variablene inden de tildeles et nyt sæt værdier ...
}

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

Kurt G (13-11-2010)
Kommentar
Fra : Kurt G


Dato : 13-11-10 11:47

"Bertel Lund Hansen" <splitteminebramsejl@lundhansen.dk> skrev i en
meddelelse news:25isd6hbf8ekpjc3m84g0va30kqeqvmock@news.dotsrc.org...
> Kurt G skrev:
>
>> Kan jeg få lidt kommentarer?
>
>> > Prøv følgende:
>> > $fields = array();
>> > for each (file($fil) as $line)
>> > if ($line) $fields[] = $line;
>
> file() læser indholdet af en fil og returnerer et array med linjerne.
>
>> > foreach ($fields as $fieldline)
>
> foreach gennemløber et array og henter en kopi af elementerne en ad
> gangen.
> Den får det navn i løkken man selv giver den i parentesen. Bemærk at det
> originale array er upåvirket af hvad man gør med kopien. Det kan være
> drilagtigt.
>
>> > list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
>
> list() med variabelnavne er en måde at tildele flere variable elementerne
> fra et array på én gang.
>
>> Og der kommer kun blank skærm ud af at prøve det (det går tilsyneledende
>> i stå).
>
> Det er fordi der ikke laves noget i løkken. Der tildeles værdier til nogle
> variable
> og så går løkken videre og tildeleder nye værdier til de samme variable
> osv.
>
> Arbejdet skal gøres her:
>
> foreach ($fields as $fieldline) {
> list($dummy,$aar,$dummy,$dag,$maaned) =explode("|",$fieldline);
> lav noget med variablene inden de tildeles et nyt sæt værdier ...
> }
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/

Tak, Bertel, jeg vil tygge lidt på det!
Mvh Kurt



scootergrisen (17-11-2010)
Kommentar
Fra : scootergrisen


Dato : 17-11-10 17:27

Jeg forsøgte igår at oprette et emne med "danske php hjemmesider" men
det lader til den er blevet fjernet eller filtreret fra eller sådan
noget for jeg kan ikke se den så jeg prøver igen...

Jeg er ved at skrive om hvordan man komme igang med php, hvilken
programmer man skal bruge og hvordan man sætter det op også tænkte jeg
at jeg vil hører hvilke danske sider i kender som forklare hvordan man
bruger php og med php kode eksempeler så jeg kan stjæle ider fra dem.

scootergrisen (17-11-2010)
Kommentar
Fra : scootergrisen


Dato : 17-11-10 17:45

arh fuck kom til at oprette forkert sted

Den 17-11-2010 17:27, scootergrisen skrev:
> Jeg forsøgte igår at oprette et emne med "danske php hjemmesider" men
> det lader til den er blevet fjernet eller filtreret fra eller sådan
> noget for jeg kan ikke se den så jeg prøver igen...
>
> Jeg er ved at skrive om hvordan man komme igang med php, hvilken
> programmer man skal bruge og hvordan man sætter det op også tænkte jeg
> at jeg vil hører hvilke danske sider i kender som forklare hvordan man
> bruger php og med php kode eksempeler så jeg kan stjæle ider fra dem.

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste