Just nu i M3-nätverket
Jump to content

Problem.


Fryer

Recommended Posts

Kör jag med nedanstående kod och får 9 träffar så visas bara 2 träffar,

men tar jag bort [1..50] så visas alla 9 träffarna.

Hur löser jag detta, om jag vill ha [1..50] kvar och visa alla träffar?

Tacksam för hjälp.

 

foreach $rad (@data[1..50]) {

 

@falt = split(/\|/,$rad);

 

if ($rad =~ /$sokord/i) {

 

print "$falt[0]:$falt[1]\n";

 

}

}

Link to comment
Share on other sites

Har du testat att använda en for-sats istället för foreach-satsen? Det är lite mer minnesödslande, men värt att testa :)

 

 

*fluff*

============================

”The future is already here,

it’s just unevenly distributed”

 

Link to comment
Share on other sites

Alltså:

 

for($i = 1; $i < 50; $i++) {

@falt = split(/\|/, $data[$i]);

if($data[$i] =~ /$sokord/i) {

print "$falt[0]:$falt[1]\n";

}
}

 

Är det vad du testat?

 

 

*fluff*

============================

”The future is already here,

it’s just unevenly distributed”

 

Link to comment
Share on other sites

Jag använde:

for ($a=1; $a < (@data) && $a < (50); $a++) {

men det ger väl samma resultat som din kod, får inte igång Apache just nu för att kunna testa ditt exempel.

Du vet inte annars hur man kan lösa det?

 

 

Link to comment
Share on other sites

Ja, det borde definitivt ge samma resultat (och egentligen inte skilja sig från en foreach-sats heller)... så frågan är varför du inte lyckas få "rätt" antal träffar...

 

Jag har svårt att se vad som kan gå "fel" men testa att langa över de 50 första raderna i en ny array och se om du får samma resultat...

 

 

*fluff*

============================

”The future is already here,

it’s just unevenly distributed”

 

Link to comment
Share on other sites

Att innan for- eller foreach-satsen lägga in:

 

@data2 = @data[1..50];

 

och köra loopen med @data2. Låter knäppt och jag har svårt att tro att det skulle fungera bättre men det är säkert värt ett försök iaf.

 

 

*fluff*

============================

”The future is already here,

it’s just unevenly distributed”

 

Link to comment
Share on other sites

Nu är jag ju nyfiken på hur det löste sig då :)

*fluff*

============================

”The future is already here,

it’s just unevenly distributed”

 

Link to comment
Share on other sites

På följande sätt:

 

 

$rakna = 0;

foreach $rad (@data) {

 

@falt = split(/\|/,$rad);

 

if ($rad =~ /$sokord/i) {

$rakna++;

if (0 * 50 <= $rakna -1 && $rakna -1 < 1 * 50) {

 

 

print "$falt[0]:$falt[1]\n";

 

}

}

}

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...